我想在C:\ Users \ Administrator \ Desktop
位置运行名为Mainfile.bat的bat文件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文件中指定的三个bat文件。
要做的是,我在python中编写了一个代码,
subprocess.call("C:\\Users\\Administrator\\Desktop\\Mainfile.bat",stdin=None, stdout=None, stderr=None, shell=False)
print "Finished"
预期输出:
我想要的是,如果我运行一个Mainfile.bat文件,它应该执行命令。这样,Mainfile.bat中的每个bat文件都需要一些时间来完成这个过程,它会在完成后自动关闭。 完成所有那些bat文件(1.bat,2.bat,3.bat)之后 - 我需要打印"完成"在控制台中。
实际输出:
但是,一旦它运行Mainfile.bat文件,它就会执行三个bat文件并立即打印" finished"在控制台中......如何实现预期输出?
获得预期输出:
通过更改Mainfile.bat中的内容
(
start 1.bat
start 2.bat
start 3.bat
) | pause
echo done!
答案 0 :(得分:0)
my_process = subprocess.Popen(os.path.abspath('C:\\Users\\Administrator\\Desktop\\Mainfile.bat'), shell=True)
stdout, stderr = my_process.communicate()
my_process.wait()
您可以使用communic(),它将等待进程完成执行。