2017-11-01 6 views
0

を使用して、バッチファイル内の別のバッチファイル:ユーザーが管理者\デスクトップを実行し、私はCの場所にMainfile.batという名前のBATファイルを実行したいPythonのサブプロセスモード

Mainfile.bat内容を\ \

start cmd /k call C:\Users\Administrator\Desktop\1.bat 

start cmd /k call C:\Users\Administrator\Desktop\2.bat 

start cmd /k call C:\Users\Administrator\Desktop\3.bat 

Mainfile.batが起動すると、batファイルで指定された3つのbatファイルを実行する必要があります。私はMainfile.batファイルを実行した場合

私が欲しい欲しいことは、実行すべき、次のとおりです行うには

は、私のような、

subprocess.call("C:\\Users\\Administrator\\Desktop\\Mainfile.bat",stdin=None, stdout=None, stderr=None, shell=False) 

print "Finished" 

予想される出力は、Pythonでコードを書いた、ありますそれで、Mainfile.batの各batファイルは処理を完了するまでに時間がかかり、処理が完了すると自動的に終了します。 すべてのこれらのバットファイル(1.bat、2.bat、3.bat)のみを実行した後、私はコンソールで "finished"を印刷する必要があります。

実際の出力:

しかし、それはMainfile.batファイルを実行したら、それは3つのBATファイルを実行し、それがすぐに印刷するには、console..Howに私が予想出力を達成することができ、「終了しましたか」? Mainfile.bat

あなたは、プロセスの実行が完了するまで待機します)(通信を使用することができます
(
    start 1.bat 
    start 2.bat 
    start 3.bat 
) | pause 

echo done! 
+0

'shell = True'を試してみませんか?たぶん、シェルから実行を指定すると、シェルが終了するまでブロックされます。 –

+0

@cᴏʟᴅsᴘᴇᴇᴅいいえ、試してみましたが、動作していません –

+0

** START **コマンドで** CALL **を使う必要はありません。それはあなたの問題を解決しません。そのコードが必要でないことを伝えるだけです。 – Squashman

答えて

0
my_process = subprocess.Popen(os.path.abspath('C:\\Users\\Administrator\\Desktop\\Mainfile.bat'), shell=True) 
    stdout, stderr = my_process.communicate() 
    my_process.wait() 

の内容を変更することにより

は、予想される出力を得ました。

+0

も機能していないので、そのプリントはすぐに終了しました。 –

+0

@pavithranG wait()を試すことができます –

+0

wait()コマンドも動作しません –

関連する問題