2012-11-23 509 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