2012-11-23 10 views
6

W moim skrypt Pythona:Python: Jak mogę wykonać plik bat w nowym oknie cmd?

p = Popen('a.bat') 

Problemem jest to, że wyjście z pliku wsadowego zostanie oddany do głównego okna konsoli, w którym wykonywany mój skrypt Pythona ... Chcę wyjście pliku wsadowego być wyświetlane w nowym oknie konsoli. Każda pomoc będzie doceniona. Dzięki.

Odpowiedz

7

Można ustawić flagę CREATE_NEW_CONSOLE. Na przykład:

import subprocess 

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

Docs dotyczące shell=True są niezgodne z implementation. Jeśli podasz shell=True, ustawia ona CREATE_NEW_CONSOLE tylko wtedy, gdy platforma jest albo Win9x, albo używa 16-bitowej powłoki COMMAND.COM.

+0

Daje to, czego się spodziewałem ... Dzięki. :) – sky

2

I nie był używany Pythona wcześniej, więc nie mogę sprawdzić, ale to powinno działać

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

Przepraszamy, ale to nie zadziała. Musi ustawić flagę tworzenia, aby powiedziała 'CreateProcess Win32 ', aby utworzyć nową konsolę dla procesu, zamiast dziedziczyć bieżącą konsolę. – eryksun

Powiązane problemy