विंडोज सीएमडी बैच, स्टार्ट और आउटपुट पुनर्निर्देशन


34

मैं एक बैच फ़ाइल से एक साथ दो प्रोग्राम चलाना चाहता हूं, और पहले प्रोग्राम के आउटपुट को टेक्स्ट फाइल में रीडायरेक्ट करता हूं जैसे:

start python 1st.py arg1 arg2 > out.txt
start 2nd.exe %1 arg2 arg3

जबकि कार्यक्रम अपेक्षित रूप से चलते हैं, सभी आउटपुट स्टडआउट पर दिखाए जाते हैं।


यह काम करना चाहिए। कुछ भी जाने बिना, मुझे आश्चर्य होता है कि क्या 1st.py आउटपुट के साथ कुछ मज़ेदार है।
zpletan

नहीं, लेकिन यह stderr को लिखता है।
कोई भी

इसीलिए- >केवल stdout को पुनर्निर्देशित करें (मुझे लगता है)। किसी भी मामले में, ऐसा लगता है कि आपके पास पहले से ही आपकी ज़रूरत है।
20

जवाबों:


35

आपको इसे इस तरह करने की आवश्यकता हो सकती है:

start cmd /c python 1st.py arg1 arg2 ^> out.txt

धन्यवाद, लेकिन यह मेरे लिए काम नहीं करता है (out.txt स्थानीय निर्देशिका में भी नहीं बनाया गया है)
कोई नहीं

मैंने इसे CScript और VBscript के साथ परीक्षण किया, इसलिए यह विचार ध्वनि है। क्या आप अपनी कमांड लाइन में कुछ "अतिरिक्त" कर रहे हैं जो यहां सूचीबद्ध नहीं है, जैसे दोहरे उद्धरण चिह्नों?
पैट्रिक सीमोर

क्षमा करें, कुछ गलत हो गया - यह काम करता है!
कोई भी

@ पैट्रिक सेमोर, आपके उत्तर के लिए धन्यवाद! मैं .bat फ़ाइल के बिना एक ही काम कैसे कर सकता हूं? यह cmd से काम नहीं करता है: python.exe ^> python_out.txt । मेरे पास एक त्रुटि थी: python.exe: फ़ाइल नहीं खोल सकता '>': [Errno 22] अमान्य तर्क
नव

7

पुनर्निर्देशन को startकमांड पर लागू किया जाता है , लेकिन किसी भी तरह से वह नहीं cmd.exeचलता है।

यदि >ऑपरेटर बच जाता है, तो सब कुछ काम करना चाहिए:

start 1st.py arg1 arg2 ^> out.txt

(यदि आप stderr को पुनर्निर्देशित करना चाहते हैं 2^>, तो इसके लिए उपयोग करें ।)


4
धन्यवाद, लेकिन यह मेरे लिए काम नहीं करता है।
कोई

5

इसके अतिरिक्त, यदि आप stderr और stdout दोनों को पुनर्निर्देशित करना चाहते हैं तो यह मेरे लिए काम करता है

कॉल विलम्ब शुरू करें। bat ^ 1 ^> log.txt ^ 2 ^> ^ & ^ 1

ऐसा लगता है कि हर चरित्र को मूल रूप से बच निकलने की जरूरत है। यह आदेश सामान्य रूप से इस तरह दिखता है:

delay.bat 1> log.txt 2> & 1


5

मेरे लिए क्या चाल थी कमांड को एक अलग बैच फ़ाइल में ले जाना था:

rem this first batch file triggers the second one:
start the_second.bat arg1 arg2 out.txt

The_second.bat तब ऐसा दिखता है:

python 1st.py %1 %2 > %3

सही उत्तर की तुलना में यह एक बहुत ही असंगत काम है।
DavidPostill

2
"सही उत्तर" मेरे लिए एक समस्या का काम नहीं था और मुझे लगा कि यह एक ऐसा समाधान हो सकता है जिसके बारे में कम से कम लोग जानना चाहते हों।
फ्लोरियन स्ट्राब जूल

मुझे असहमत होना पड़ेगा। कमांड में पात्रों से बचने का सही तरीका सीखना बेहतर विचार है।
DavidPostill

कृपया मुझे सिखाएं कि कैसे >> आउटपुट का उपयोग करके अटैचमेंट से बच सकें।
फ्लोरियन स्ट्रब

मैंने आपको पहले ही बताया था। स्वीकृत उत्तर पढ़ें।
DavidPostill
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.