2012-05-30 32 views
9

यूनिक्स आई पर की तरह कुछ करना होगा?आप Windows कमांड लाइन में किसी फ़ाइल में मानक इनपुट को रीडायरेक्ट कैसे करते हैं?</p> <pre><code>cat > file.txt </code></pre> <p>कैसे मैं Windows कमांड प्रॉम्प्ट या बैच फ़ाइल पर ऐसा कर सकते:

संपादित करें: मूल रूप से, मेरे पास कोई तर्क (यह stdin से पढ़ता है और इसे वापस थूक stdout के लिए बाहर) के साथ cat की कार्यक्षमता के लिए देख रहा हूँ।

+1

'टाइप करें इसफाइल> output.txt' सभी आउटपुट को यूनिक्स के समान धक्का देता है बिल्ली 'टाइप करें इसफाइल >> output.txt' सभी प्रकार के आउटपुट को' टाइप' 'का उपयोग करने के लिए – Kyle

+0

+1 ओवरराइट किए बिना फ़ाइल को इतना अच्छा और सरल समाधान जोड़ता है। –

+0

@DominicP को छोड़कर यह मेरे उद्देश्यों के लिए काम नहीं करता है ("संपादित करें" के बाद पढ़ें) – Matt

उत्तर

16

TYPE CON

CON सांत्वना इनपुट के लिए MS-DOS डिवाइस है। इस प्रकार आप एक फ़ाइल को अनुप्रेषित कर सकते हैं:

TYPE CON>output.txt

समाप्त के लिए, Ctrl + सी या Ctrl + जेड, दर्ज (Ctrl मारा + जेड = EOF)।

+0

साल भर बहुत देर हो चुकी है, लेकिन आखिर में एक गैर-कामकाजी जवाब! धन्यवाद! – Matt

+1

आह लॉल! यह दूसरों के लिए उपयोगी हो सकता है हालांकि मुझे लगता है ... मैं शायद मेरी उम्र का एकमात्र व्यक्ति हूं जो एमएस-डॉस को टाइपराइटर में बदलने के लिए सुरुचिपूर्ण 'टाइप कंस> एलपीटी 1' शॉर्टकट के बारे में जानता है! –

+1

कई * निक्स कमांड के विंडोज विकल्प मौजूद हैं - लेकिन वे बुश के रूप में बुद्धिमान ढंग से डिज़ाइन किए जाने के बजाय "विकसित" थे, इसलिए वे खोजने के लिए थोड़ा कठिन और अक्सर उपयोग करने के लिए कहीं अधिक जटिल हैं ... एक महान इस अंतर का उदाहरण बैश बैकटिक बनाम डीओएस में समकक्ष 'फोर' निर्माण है। पावरहेल और सी # स्क्रिप्ट के लिए स्वर्ग धन्यवाद! –

0

मानक इनपुट:

बैच फ़ाइल:

:: set /p MyVar= Prompts user for stdin information 

set /p MyVar= 

echo %MyVar% > filename 
+0

हालांकि इसे पहले stdin की पूरी तरह पढ़ना होगा, है ना? ऐसा लगता है कि अगर स्टडीन बहुत बड़ा है तो यह अव्यवहारिक होगा। – Matt

8

सब आप चाहते हैं stdin पढ़ने और लिखने क्या आप stdout के लिए पढ़ने के लिए है, तो findstr काम करेंगे।

findstr "^" 

आप पुनर्निर्देशन या पाइप के माध्यम से stdin की आपूर्ति कर सकते हैं।

FINDSTR "^" बिल्ली के समान ही है जिसमें यह संशोधन के बिना सटीक बाइनरी इनपुट आउटपुट करेगा।

यदि एकल इनपुट फ़ाइल निर्दिष्ट है तो बिल्ली के समान भी है।

findstr "^" fileName 

फिर आउटपुट एक सटीक बाइनरी प्रति होगी।

कार्यक्षमता अलग हो जाती है यदि एकाधिक इनपुट फ़ाइलों को निर्दिष्ट किया गया है क्योंकि उस स्थिति में फ़ाइल का नाम आउटपुट की प्रत्येक पंक्ति के उपसर्ग के रूप में उपयोग किया जाएगा।

यह बिल्ली से अलग है कि यह दोनों stdin और नामित फ़ाइल से नहीं पढ़ सकता है।

संपादित
ध्यान दें कि findstr अंत लाइन जोड़ देंगे, <CR><LF> मार्करों इनपुट पहुंचाया करने के लिए यदि इनपुट धारा के आखिरी चरित्र एक <LF> नहीं है। यह FINDSTR का एक कार्य है, न कि विंडोज पाइप तंत्र। FINDSTR पुनर्निर्देशित इनपुट के लिए <CR><LF> संलग्न नहीं करता है। यदि रीडायरेक्ट इनपुट पढ़ना है और अंतिम पंक्ति <LF> के साथ समाप्त नहीं होती है तो FINDSTR XP और Windows 7 पर अनिश्चित काल तक लटका होगा। अधिक जानकारी के लिए What are the undocumented features and limitations of the Windows FINDSTR command? देखें।

+0

संपादित करें - सीआर/एलएफ युक्त पाइप इनपुट के बारे में सही जानकारी। XP और Windows 7 के बारे में जानकारी जोड़ा गया संभावित रूप से पुनर्निर्देशित इनपुट – dbenham

+0

के साथ लटक रहा है इस उत्तर के लिए धन्यवाद! वहां किसी और के लिए, एक बैच फ़ाइल जो "foo.txt" फ़ाइल करने के लिए stdin लिखती है (संलग्न करता है) है: findstr "^" >> foo.txt –

4

मुझे लगता है कि more.exe जो हो सकता है वह हो सकता है।

यह दोनों कंसोल से इनपुट ले जा सकते हैं:

more > file1.txt 

या किसी अन्य फ़ाइल से में पहुंचाया है, जो TYPE CONनहीं संभाल करता है:

type file1.txt | more > file2.txt 

(more एक नई पंक्ति संलग्न करने के लिए लगता है अपनी फ़ाइल में और टैब का विस्तार करें, इसलिए बाइनरी डेटा पर इसका उपयोग न करें!)

+0

वास्तव में यह मदद मिली जब मेरे पास एकाधिक लाइनें थीं। धन्यवाद – TheGameiswar