如何使用Python在后台运行DOS批处理文件?

时间:2012-10-09 06:07:44

标签: python command-line subprocess

如何使用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.)
>>>

3 个答案:

答案 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窗口上运行。