如何使用Python在后台运行DOS批处理文件?
我有一个test.bat文件,比如说C:\
现在,我想在后台使用python运行这个bat文件,然后我想返回到python命令行。
我使用python命令行中的subprocess.call('path\to\test.bat')
运行批处理文件。
它在与python命令行相同的窗口中运行批处理文件。
如果还不清楚/ TL.DR -
发生了什么:
>>>subprocess.call('C:\test.bat')
(Running test.bat. Can't use python in the same window)
我想要的是什么:
>>>subprocess.call('C:\test.bat')
(New commandline window created in the background where test.bat runs in parallel.)
>>>
答案 0 :(得分:5)
这似乎对我有用:
import subprocess
p = subprocess.Popen(r'start cmd /c C:\test.bat', shell=True)
p.wait()
print 'done'
答案 1 :(得分:0)
subprocess.call
的文档说
运行args描述的命令。等待命令完成,然后返回returncode属性。
在您的情况下,您不希望在继续执行程序之前等待命令完成,因此请改用subprocess.Popen
:
subprocess.Popen('C:\test.bat')
答案 2 :(得分:0)
我会用
subprocess.Popen("test.bat", creationflags=subprocess.CREATE_NEW_CONSOLE)
#subprocess.call("ls")
#etc...
那么你可以继续在同一个文件中调用其他命令,让“test.bat”在一个单独的cmd窗口上运行。