2012-11-23 507 views
6

在我的python脚本:Python:我如何在新的cmd窗口中执行bat文件?

p = Popen('a.bat') 

的问题是,该批处理文件的输出被投入在我执行我的Python脚本主控制台窗口...我想要的批处理文件的输出为在新的控制台窗口中显示。任何帮助,将不胜感激。谢谢。

回答

7

您可以设置CREATE_NEW_CONSOLE标志。例如:

import subprocess 

p = subprocess.Popen('a.bat', creationflags=subprocess.CREATE_NEW_CONSOLE) 

关于shell=True的文档是与implementation不一致。如果指定shell=True,则只有在平台是Win9x或使用16位COMMAND.COM外壳程序时,才会设置CREATE_NEW_CONSOLE

+0

这给我所期望的...谢谢。 :) – sky

2

我以前没有使用过蟒蛇,所以我无法测试,但这应该工作

p = Popen('cmd.exe /k start a.bat') 
+0

对不起,但这是行不通的。它需要设置创建标志来告诉Win32的'CreateProcess'为该进程创建一个新的控制台,而不是继承当前的控制台。 – eryksun