2

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

我在 C:\ 中有一个 test.bat 文件
现在,我想在后台使用 python 运行这个 bat 文件,然后我想返回到 python 命令行。

subprocess.call('path\to\test.bat')我使用从 python 命令行运行批处理文件。它在与 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.)
>>>
4

3 回答 3

5

这似乎对我有用:

import subprocess

p = subprocess.Popen(r'start cmd /c C:\test.bat', shell=True)

p.wait()

print 'done'
于 2012-10-09T06:43:34.460 回答
0

文档subprocess.call

运行 args 描述的命令。等待命令完成,然后返回 returncode 属性。

在您的情况下,您不想在继续程序之前等待命令完成,因此请subprocess.Popen改用:

subprocess.Popen('C:\test.bat')
于 2012-10-09T06:10:17.800 回答
0

我会用

subprocess.Popen("test.bat", creationflags=subprocess.CREATE_NEW_CONSOLE)
#subprocess.call("ls")
#etc...

So then you can keep calling other commands in the same file, having "test.bat" run on a separate cmd window.

于 2016-04-25T12:20:52.960 回答