विंडोज कमांड लाइन से आउटपुट को टेक्स्ट फाइल में रीडायरेक्ट करें
विंडोज़(Windows) पर आपके द्वारा चलाए जाने वाले कमांड या बैच जॉब के व्यवहार को लॉग और समस्या निवारण करने के सबसे उपयोगी तरीकों में से एक फ़ाइल में आउटपुट को रीडायरेक्ट करना है।
हालाँकि, कुछ अलग तरीके हैं जिनसे आप कमांड लाइन राइट्स को फ़ाइल में रीडायरेक्ट कर सकते हैं। आपके द्वारा चुना गया विकल्प इस बात पर निर्भर करता है कि आप अपने कमांड आउटपुट को कैसे देखना चाहते हैं।
विंडोज कमांड प्रॉम्प्ट आउटपुट कैसे काम करता है(How Windows Command Prompt Output Works)
जब आप विंडोज(Windows) कंसोल ( कमांड प्रॉम्प्ट(command prompt) ) में एक कमांड टाइप करते हैं, तो उस कमांड से आउटपुट दो अलग-अलग स्ट्रीम में जाता है।
- STDOUT : स्टैंडर्ड आउट(Out) वह जगह है जहां कमांड से कोई भी मानक प्रतिक्रिया होती है। उदाहरण के लिए डीआईआर(DIR) कमांड के लिए मानक प्रतिक्रिया एक निर्देशिका के अंदर फाइलों की एक सूची है।
- एसटीडीईआरआर(STDERR) : मानक त्रुटि(Standard Error) वह है जहां आदेश के साथ कोई समस्या होने पर कोई त्रुटि संदेश जाता है। उदाहरण के लिए यदि निर्देशिका में कोई फ़ाइल नहीं है, तो DIR कमांड मानक त्रुटि(Standard Error) स्ट्रीम में " फ़ाइल(File) नहीं मिली" आउटपुट करेगा।
आप इन दोनों आउटपुट स्ट्रीम के लिए आउटपुट को विंडोज़(Windows) में फ़ाइल में रीडायरेक्ट कर सकते हैं।
मानक आउटपुट को नई फ़ाइल में पुनर्निर्देशित करें(Redirect Standard Output Write to New File)
किसी कमांड के मानक आउटपुट को फ़ाइल में पुनर्निर्देशित करने के दो तरीके हैं। पहला यह है कि हर बार जब आप कमांड चलाते हैं तो कमांड आउटपुट को एक नई फाइल में लिखें।
ऐसा करने के लिए, कमांड प्रॉम्प्ट खोलें और टाइप करें:
dir test.exe > myoutput.txt
> वर्ण कंसोल को आपके द्वारा प्रदान किए गए नाम के साथ फ़ाइल में STDOUT आउटपुट करने के लिए कहता है।(STDOUT)
जब आप इस कमांड को चलाते हैं(run this command) , तो आप देखेंगे कि कमांड विंडो में इस त्रुटि के अलावा कोई प्रतिक्रिया नहीं है कि फ़ाइल मौजूद नहीं है।
ऐसा इसलिए है क्योंकि कमांड के लिए मानक आउटपुट myoutput.txt नामक फ़ाइल पर पुनर्निर्देशित किया गया था। फ़ाइल अब उसी निर्देशिका में मौजूद है जहाँ आपने कमांड चलाया था। मानक त्रुटि आउटपुट अभी भी सामान्य रूप से प्रदर्शित होता है।
नोट(Note) : कमांड चलाने से पहले कमांड प्रॉम्प्ट के लिए सक्रिय निर्देशिका को बदलने के(change the active directory) लिए सावधान रहें । इस तरह आपको पता चल जाएगा कि आउटपुट फ़ाइलें कहाँ संग्रहीत हैं।
आप कमांड विंडो में "myoutput.txt" टाइप करके फ़ाइल में जाने वाले मानक आउटपुट को देख सकते हैं। यह आपके डिफ़ॉल्ट टेक्स्ट फ़ाइल व्यूअर में टेक्स्ट फ़ाइल को खोलेगा। ज्यादातर लोगों के लिए, यह आमतौर पर Notepad.exe होता है ।
अगली बार जब आप वही आदेश चलाएंगे, तो पिछली आउटपुट फ़ाइल हटा दी जाएगी। नवीनतम कमांड के आउटपुट के साथ एक नई आउटपुट फाइल को फिर से बनाया जाएगा।
मानक आउटपुट(Standard Output) को उसी फ़ाइल(Same File) में पुनर्निर्देशित करें
क्या होगा यदि आप उसी फ़ाइल को अधिलेखित नहीं करना चाहते हैं? एक अन्य विकल्प आउटपुट फ़ाइल पर रीडायरेक्ट करने के लिए > के बजाय >> का उपयोग करना है। इस उदाहरण के मामले में, आप टाइप करेंगे:
dir test.exe >> myoutput.txt
आपको वही आउटपुट (केवल त्रुटि) दिखाई देगा।
लेकिन इस मामले में, आउटपुट फ़ाइल को अधिलेखित करने के बजाय, यह कमांड नए आउटपुट को मौजूदा आउटपुट फ़ाइल में जोड़ देता है।
हर बार जब आप कोई कमांड चलाते हैं और आउटपुट को किसी फ़ाइल में जोड़ते हैं, तो यह मौजूदा फ़ाइल के अंत में नया मानक आउटपुट लिखेगा।
मानक त्रुटि को फ़ाइल में पुनर्निर्देशित करें(Redirect Standard Error To a File)
जिस तरह आप किसी फ़ाइल में मानक आउटपुट राइट्स को रीडायरेक्ट कर सकते हैं, उसी तरह आप किसी फ़ाइल में मानक एरर स्ट्रीम को भी आउटपुट कर सकते हैं।
ऐसा करने के लिए, आपको कमांड के अंत में 2>
इस उदाहरण में, आप कमांड टाइप करेंगे:
dir test.exe > myoutput.txt 2> output.err
यह मानक आउटपुट स्ट्रीम को myoutput.txt पर भेजता है, और मानक त्रुटि स्ट्रीम को output.err पर भेजता है। नतीजा यह है कि कंसोल विंडो में कोई आउटपुट स्ट्रीम बिल्कुल प्रदर्शित नहीं होती है।
हालाँकि, आप output.err टाइप करके त्रुटि संदेश देख सकते हैं । यह फ़ाइल को आपके डिफ़ॉल्ट टेक्स्ट फ़ाइल व्यूअर में खोलेगा।
जैसा कि आप देख सकते हैं, कमांड से कोई भी त्रुटि संदेश त्रुटि फ़ाइल में आउटपुट होता है। मानक आउटपुट की तरह ही, आप पहले से चलाए गए कमांड से त्रुटि को जोड़ने के बजाय >> का उपयोग कर सकते(Just) हैं >>
सभी आउटपुट राइट्स को एक ही फाइल पर रीडायरेक्ट करें(Redirect All Output Writes to a Same File)
उपरोक्त सभी दृष्टिकोणों का परिणाम कई फाइलों में होता है। एक फ़ाइल मानक आउटपुट स्ट्रीम के लिए है और दूसरी मानक त्रुटि स्ट्रीम के लिए है।
यदि आप इन दोनों आउटपुट को एक ही फाइल में शामिल करना चाहते हैं, तो आप ऐसा भी कर सकते हैं। ऐसा करने के लिए, आपको बस निम्न आदेश का उपयोग करके सभी आउटपुट को एक ही फ़ाइल में रीडायरेक्ट करने की आवश्यकता है।
dir test.exe 1> myoutput.txt 2>&1
यहां बताया गया है कि यह आदेश कैसे काम करता है:
- मानक आउटपुट को आउटपुट नंबर 1 द्वारा पहचानी गई आउटपुट फ़ाइल के लिए निर्देशित किया जाता है।
- नंबर 2 द्वारा पहचाने गए मानक त्रुटि आउटपुट को नंबर 1 द्वारा पहचानी गई आउटपुट फ़ाइल पर पुनर्निर्देशित किया जाता है।
यह त्रुटि आउटपुट को मानक आउटपुट के अंत में जोड़ देगा।
यह किसी भी कमांड के सभी आउटपुट को एक फाइल में देखने का एक उपयोगी तरीका है।
साइलेंसिंग मानक या त्रुटि आउटपुट स्ट्रीम(Silencing Standard or Error Output Streams)
आप फ़ाइल के बजाय आउटपुट को NUL पर पुनर्निर्देशित करके मानक आउटपुट(Standard Output) या मानक त्रुटि(Standard Error) को भी बंद कर सकते हैं ।
उपरोक्त उदाहरण का उपयोग करते हुए, यदि आप केवल मानक आउटपुट(Standard Output) चाहते हैं और कोई मानक त्रुटि(Standard Error) नहीं चाहते हैं, तो आप निम्न आदेश का उपयोग कर सकते हैं:
dir test.exe 1> myoutput.txt 2>nul
यह उसी आउटपुट फ़ाइल में परिणाम देगा जैसा कि ऊपर पहला उदाहरण है जहां आपने केवल मानक आउटपुट(Standard Output) को पुनर्निर्देशित किया था , लेकिन इस आदेश के साथ त्रुटि कंसोल के अंदर गूंज नहीं होगी। यह त्रुटि लॉग फ़ाइल भी नहीं बनाएगा।
यह उपयोगी है यदि आप किसी भी त्रुटि की परवाह नहीं करते हैं और नहीं चाहते कि वे एक उपद्रव बनें।
आप BAT फ़ाइल के अंदर(inside a BAT file) से ऊपर दिए गए समान आउटपुट कमांड में से कोई भी प्रदर्शन कर सकते हैं और उस लाइन से आउटपुट आपके द्वारा निर्दिष्ट आउटपुट फ़ाइल में जाएगा। यह देखने का एक उपयोगी तरीका है कि क्या BAT फ़ाइल के भीतर किसी भी कमांड में कोई त्रुटि थी जब उन्होंने चलाने का प्रयास किया।
Related posts
विंडोज़ में एक टेक्स्ट फ़ाइल में चल रही प्रक्रियाओं की सूची सहेजें
विंडोज 10/11 में टास्ककिल कमांड का उपयोग कैसे करें
विंडोज टास्कबार में आइकन से टेक्स्ट कैसे निकालें
विंडोज़ में कमांड प्रॉम्प्ट तक पहुंच को रोकें
विंडोज 7/8/10 में डेस्कटॉप आइकॉन से टेक्स्ट लेबल हटाएं
विंडोज़ में 'फ़ाइल नाम बहुत लंबा है' समस्या को कैसे ठीक करें
विंडोज की को डिसेबल कैसे करें
कमांड प्रॉम्प्ट से माइक्रोसॉफ्ट स्टोर ऐप कैसे खोलें
विंडोज़ में इवेंट लॉग के लिए निर्यात, साफ़ और आकार बढ़ाएं
माउस को छुए बिना अपने विंडोज पीसी को कैसे जगाए रखें?
पुस्तक समीक्षा - विंडोज 8 के लिए हाउ-टू गीक गाइड
विंडोज 11/10 में कमांड लाइन का उपयोग करके एक प्रक्रिया को कैसे मारें?
एंड्रॉइड से टेक्स्ट मैसेज कैसे प्रिंट करें
विंडोज़ पर एक जार फ़ाइल कैसे खोलें
Windows 7/8/10 . में Windows.old फ़ोल्डर को कैसे हटाएं
त्रुटियों की जांच के लिए विंडोज 7 में सिस्टम हेल्थ रिपोर्ट जेनरेट करें
कैसे बताएं कि आपने विंडोज का कौन सा संस्करण स्थापित किया है
विंडोज और मैक पर ब्लूस्टैक्स को कैसे अनइंस्टॉल करें
विंडोज 11/10 के टास्क मैनेजर में कमांड लाइन को कैसे प्रदर्शित करें
विंडोज 7 में IE को अनइंस्टॉल और रीइंस्टॉल करें