をバッチファイルを実行します。は、私は、次の(Windowsの場合)のようなAAファイル構造を持っている別のディレクトリに
D:\
dir_1\
batch_1.bat
dir_1a\
batch_2.bat
dir_2\
main.py
この質問のために、batch_1.bat
は、単にbatch_2.bat
を呼び出し、次のようになります。
cd dir_1a
start batch_2.bat %*
コマンドプロンプトからbatch_1.bat
を開くと、確かにbatch_2.bat
が表示され、そこからすべてが金色になります。
私のPythonファイルD:\dir_2\main.py
は、batch_2.bat
を開始してbatch_1.bat
という新しいプロセスを起動します。だから私は、次のPythonのコードは動作するはずです考え出し:
import subprocess
subprocess.Popen(['cd "D:/dir_1"', "start batch_1.bat"], shell=True)
これは私のPythonのコンソールに出力されている「システムは指定されたパスを見つけることができません」になります。 (もちろんエラーは発生しません)。これは最初のコマンドによるものです。
subprocess.Popen(['cd "D:/"'], shell=True)
は、私もそうのように、直接バッチファイルを起動しようとした:私は完全に取得しない理由から
subprocess.Popen("start D:/dir_1/batch_1.bat", shell=True)
、この私が、私はそれを削減しても同じ結果を得ますWindowsのコマンドプロンプトを開くだけであると思われます。はdir_2
です。
私はこのコマンドのstart
部分を除いていれば、私のPythonプロセスは終了して終了するつもりです。私はしたくありません。しかし、それは少しさらに得るん:
subprocess.Popen("D:/dir_1/batch_1.bat", shell=True)
は、これは、その結果Pythonスクリプトのディレクトリではなく、batch_1.bat
のディレクトリが、見つけることができない、batch_1.bat
成功しdir_2
に...実行し、その結果dir_1a\
であるため、batch_2.bat
はまったく実行されません。
非常に混乱しています。何が間違っているのですか?代わりに何をしなければなりませんか?
あなたは 'subprocess.Popen(r'startのDしようとしました:\ dir_1を\ batch_1.bat '、shell = True、cwd = r'd:\ dir_1') '? – falsetru
'&&'を使うと、 'Popen( 'cd D:/ dir_1/&& start batch_1.bat'、shell = True)' – Stack