私がしたいのは、スクリプトを実行するデスクトップショートカットを持つことです。バッチとPythonを使用しようとしていましたが、それが動作すればどの言語が本当に気にしません。 bashシェル(Linux用Windowsサブシステム)を開き、シェルを開いたままで簡単なコマンドを実行するためのスクリプトが必要です。最初は、これは簡単だと思いましたが、今でも可能かどうか質問しています。私はバッシュを開いて開いたままにする単純なバッチファイルを作ったが、私が入れたテストコマンドはそれをシェルに作っていなかった。 (私は本当にそれを期待していなかったが、私はこれを行う良い方法を考えることができないので、私はランダムなものを試している)。この後スクリプトがWSL bashシェルを開いてコマンドを送ることは可能ですか?
bash
cowsay test
PAUSE
I bashを開き、開いたシェルを保持し、コマンドを実行しますシェルスクリプトを実行するPythonスクリプトを使用してみました、:ここで私が使用したバッチファイルです。
import os
import time
os.system("start /wait bash /c {./test.sh}")
while 1:
time.sleep(2)
何らかの理由で、bashが見つからないというエラーが表示されます。これはプロジェクトや何かのためではありません。それは実際に友人のコンピュータのための冗談のようなものですが、私は本当にこれが可能かどうかを知りたいと思います。どのようにしてこれがうまくいくか考えている人がいれば、私はアイデアがなく他の類似の質問も見つけられないので感謝します。
ないあなたが何を意味するかわからような何かを行うことができますが、「cowsay test'' –
WSLのbash.exe -c bashがにインストールされますのみ64ビットのビルドです 'てみてください実際のSystem32あなたのPythonが32ビットだと仮定して、 "System32"は "SysWOW64"にリダイレクトされます。 WOW64アプリ(*のみ* WOW64アプリ)は、実際の "System32"ディレクトリを "SysNative"として参照することができます。 'bash_path = os.path.join(os.environ ['SystemRoot']、 'SysNative'、 'bash.exe')'です。 – eryksun
'subprocess.Popen'を使用する必要があります。stdin、stdout、およびstderrはパイプと2つの専用リーダースレッドにリダイレクトされます.1つはstdout用で、もう1つはstderr用です。 'shell = True'やバッチスクリプトを使わないでください。 CMDはこれに関与する必要はありません。 – eryksun