2012-11-23 7 views
6

मेरे अजगर स्क्रिप्ट में:पायथन: मैं नई cmd विंडो में बैट फ़ाइल कैसे निष्पादित कर सकता हूं?

p = Popen('a.bat') 

समस्या यह है कि है बैच फ़ाइल के उत्पादन में मुख्य कंसोल विंडो जिसमें मैं अपने अजगर स्क्रिप्ट के निष्पादित करने के लिए रखा जाता है ... मैं बैच फ़ाइल के उत्पादन में चाहते हैं होने के लिए नई कंसोल विंडो में दिखाया गया है। किसी भी सहायता की सराहना की जाएगी। धन्यवाद।

उत्तर

7

आप CREATE_NEW_CONSOLE ध्वज सेट कर सकते हैं। उदाहरण के लिए:

import subprocess 

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

shell=True के बारे में डॉक्स implementation से असंगत हैं। यदि आप shell=True निर्दिष्ट करते हैं, तो यह केवल CREATE_NEW_CONSOLE सेट करता है यदि प्लेटफ़ॉर्म या तो Win9x है या 16-बिट COMMAND.COM खोल का उपयोग करता है।

+0

यह मुझे क्या उम्मीद है ... धन्यवाद। :) – sky

2

मैंने पहले अजगर का इस्तेमाल किया है नहीं, इसलिए मैं परीक्षण नहीं कर सकते, लेकिन यह काम करना चाहिए

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

क्षमा करें, लेकिन यह काम नहीं करेगा। वर्तमान कंसोल विरासत के बजाय प्रक्रिया के लिए एक नया कंसोल बनाने के लिए Win32 के 'CreateProcess' को बताने के लिए इसे निर्माण ध्वज सेट करने की आवश्यकता है। – eryksun

संबंधित मुद्दे