Cygwin के भीतर से cmd.exe चल रहा है


16

मैं काम पर अपने मुख्य शेल के लिए Cygwin का उपयोग करना चाहता हूं, लेकिन मेरा समूह कई प्रक्रियाओं के लिए बैच फ़ाइलों का उपयोग करता है। मुझे बताया गया है कि मैं cmd /c batch.batसिग्विन से बैच फाइल चलाने के लिए बस कर सकता हूं । यह कुछ मामलों के लिए काम करता है, और दूसरों के लिए नहीं। बैच फ़ाइलों में से एक पूरी तरह से विफल रहता है जब मैं ऐसा करता हूं, लेकिन जब मैं इसे cmd शेल से चलाता हूं तो ठीक काम करता है।

एक और विषमता मैंने देखी है कि अगर मैं cmd /?साइगविन से भागता हूं, तो मुझे कोई आउटपुट नहीं मिलता है। इसे cmd शेल से चलाने से मानक मदद मिलती है। यहां तक ​​कि करने से cmd /c cmd /?कोई आउटपुट नहीं मिलता है। यदि मैं cmdसाइगविन से चलाता हूं , तो यह मुझे cmd शेल देता है, और फिर अगर मैं चलाता cmd /?हूं, तो मुझे सहायता पाठ मिलता है, लेकिन पेज के बिना टूट जाता है।

मुझे लगता है कि कोशिश करने के लिए अगली बात यह है कि वास्तव में अपनी अलग खिड़की के भीतर cmd लॉन्च करने का एक तरीका खोजना है, जैसे कि आप Start-> Run में गए हैं, और फिर "cmd" टाइप किया है। क्या सिग्विन के भीतर से ऐसा करने का कोई तरीका है?

जवाबों:


8

/?को बैश द्वारा एक पैटर्न के रूप में माना जाता है, जहां प्रश्न चिह्न एक एकल पात्र में फिट होगा, इसलिए यदि आपके पास आपके Cygwin रूट में कोई एक-अक्षर फ़ाइल या निर्देशिकाएं हैं, तो पैटर्न को उन लोगों के साथ बदल दिया जाएगा। echo /?आपको दिखाएगा कि क्या हो रहा है। आपको एक बैकस्लैश वाले प्रश्न चिह्न बच सकते हैं: /\?। या पूरे तर्क को उद्धृत करें '/?':।

cygstart c:/windows/system32/cmd cmd.exe को अपनी विंडो में प्रारंभ करेगा।


मेरी जीत xp sp2 पर यह कोड स्निपेट निम्नलिखित काम करेगा: cygstart / cygdrive / c / WINDOWS / system32 / cmd
Michael Mao

14

आप सीधे साइग्विन शेल से एक बैच फ़ाइल चला सकते हैं, आपको मध्यवर्ती कॉल की भी आवश्यकता नहीं है cmd। यदि बैच फ़ाइल में तर्क की आवश्यकता होती है, तो उन्हें विंडोज फैशन में उद्धृत किया जाना चाहिए; इसे चलाना सरल हो सकता है cmd /c 'foo.bat "quoted arguments"'

आप यह नहीं कहते कि आप किस टर्मिनल में शेल चला रहे हैं। अपने आप से बैच फ़ाइलों के बारे में परवाह नहीं है, लेकिन आदेश है कि बैच फ़ाइलों से निष्पादित कर रहे हैं हो सकता है। Cygwin टर्मिनल एमुलेटर विंडोज कंसोल का अनुकरण नहीं करते हैं, इसलिए वे Cygwin प्रोग्रामों के लिए और stdio- केवल प्रोग्राम्स के लिए अच्छे हैं लेकिन Windows कंसोल प्रोग्राम्स के लिए नहीं।

अगर आम तौर पर Cygwin टर्मिनल (जैसे कि rxvt या mintty) में Cygwin गोले चलाते हैं, तो आप एक अलग Windows कंसोल में मुसीबत बैच फ़ाइलों को चला सकते हैं start foo.bat। आप चलाने के लिए चाहते हो सकता है Console2 Windows कंसोल के लिए एक बेहतर विकल्प के रूप में, और (या Console2 में भी) एक Cygwin टर्मिनल में Console2 और Cygwin अनुप्रयोगों में Windows कंसोल अनुप्रयोगों को चलाने।

cmd /?एक लाल हेरिंग है: साइग्विन रूट निर्देशिका में संभवतः एक-वर्ण-लंबी निर्देशिकाएं हैं, इसलिए शेल का विस्तार होता है /?और cmdस्विच के साथ चलता है जो कि कोई आउटपुट नहीं होता है।


मुझे cmd के तर्कों में शेल चरों को चिपकाने की आवश्यकता थी, इसलिए मुझे लगा कि निम्नलिखित बाश और cmd पार्सर के आसपास काम कर सकता है: u = 'DOMAIN \ ACC' p = 'X <12' r = '{Baz 3.1 5-x (TTT) )} 'd = $' \ "cmd / c foo.bat -u% d %% u %% d% -p% d %% p %% d% -fooBar% d %% r %% d% - fooBAR सच
eel ghEEz
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.