विंडोज: कमांड लाइन रीडायरेक्शन को टेक्स्ट फाइल में जबकि आउटपुट भी देख रहा है


30

मैं विंडोज में एक सी प्रोग्राम लिख रहा हूं, मेरा प्रिंटफ कॉल कमांड लाइन पर प्रिंट करता है, और मुझे पता है कि मैं इस सभी आउटपुट को टेक्स्ट फाइल का उपयोग करके रीडायरेक्ट कर सकता हूं:

myProgram.exe > mylog.txt

हालाँकि, मैं उस आउटपुट को भी देखना चाहता हूँ जो कंसोल पर प्रिंट किया गया हो और साथ ही टेक्स्ट फाइल में भी लॉग इन किया हो।

क्या इसे करने का कोई तरीका है? मैं लॉग फ़ाइल की निगरानी के लिए पूंछ का उपयोग करने के बारे में सोच रहा था।


मैंने कभी-कभी एक और cmd प्रॉम्प्ट विंडो खोल दी है और बार-बार mylog.txt टाइप कर रहा है (या mylog.txt नोटपैड नहीं कर सका) और देखें कि यह कैसे विकसित होता है। टी हालांकि एक महान की तरह लग रहा है।
बार्लोप 21


जवाबों:


19

विंडोज़ पावरशेल में एक उपकरण है जो ऐसा कर सकता है, जिसका नाम teeयूनिक्स टूल के नाम पर रखा गया है जो ऐसा ही करता है।

वैकल्पिक रूप से, teeविंडोज़ के लिए यूनिक्स के पोर्ट हैं :


3
शक्तियां एक महान टिप है, cmd सिर्फ उन लोगों के लिए हो सकता है जो अभी तक स्थानांतरित नहीं हुए हैं! Gnuwin32 का उपयोग करना unxutils का उपयोग करने से बेहतर है, unxutils बल्कि पुराना है। gnuwin32 नया है और संभवत: उसके पास भी अनएक्सट्यूट में सब कुछ है, और बहुत अधिक उपयोगिताओं है। जैसा कि कहीं और उल्लेख किया गया है, gnuwin32 कोरुटिल्स में टी है
बार्लोप

सीएमडीर में समान काम करता है, एक और तीसरी पार्टी कमांड-लाइन उपयोग।
रौनी

1
इस उत्तर में superuser.com/a/273112/213743 BaconBits बताते हैं कि PowerShell tee लाइन-ओरिएंटेड है: यह एक लाइन को आउटपुट नहीं करेगा "जब तक कि एक एंड-ऑफ-लाइन कैरेक्टर नहीं हो जाता है" newline वर्ण का सामना करना पड़ा है। BaconBits का सुझाव है कि यूनिक्स टी हमेशा तुरंत आगे की सामग्री।
buzz3791

8

विंडोज के तहत सभी मुझे लगता है कि यह करना है:

myProgram.exe > mylog.txt & type mylog.txt

यह आपके प्रश्न में कमांड उदाहरण पर आधारित है - अगर वास्तव में आप आउटपुट को जोड़ना चाहते थे, mylog.txtतो आप >>इसके बजाय उपयोग करना चाहते थे >, लेकिन typeपूरी लॉग फ़ाइल को प्रिंट कर लेंगे, न कि केवल उसी को जोड़ा गया था।

यदि आप GnuWin32 CoreUtils डाउनलोड करते हैं , तो आप ऐसा करने के लिए यूनिक्स विधि ( teeकमांड) का उपयोग कर सकते हैं :

myProgram.exe | tee mylog.txt

यह myProgram.exe के आउटपुट को लिखेगा, mylog.txtलेकिन साथ ही इसे कंसोल पर प्रदर्शित भी करेगा। यदि आप केवल अपेंड करना चाहते हैं mylog.txtतो आप -aटी को पैरामीटर पास कर सकते हैं ।


2
टी समाधान बेहतर दिखता है। आपके द्वारा उल्लेखित दूसरी चीज एक साथ नहीं है।
बार्लोप 21

1
@barlop - मैं मानता हूं, पहला समाधान वर्कअराउंड का एक सा है क्योंकि आप इसे विंडोज में मूल रूप से नहीं कर सकते। टी यहाँ चाल अच्छी तरह से करता है :)
Gaff

मदद के लिए धन्यवाद, upvoted, टी के साथ जा रहा है, लेकिन lesmana पहले मिनट की एक जोड़ी में मिला जब वह / वह टी का उल्लेख किया :)
user79397

यदि आप 'टाइप' छोड़ देते हैं, तो यह कार्य पूरा होने पर डिफ़ॉल्ट संपादक (मेरे लिए नोटपैड) में फ़ाइल खोलेगा।
जोश स्ट्रिब्लिंग


0

मुझे बस इसी तरह की जरूरत थी और टेल का इस्तेमाल ओपी ने सुझाव दिया कि वे कर सकते हैं:

>C:\Temp\Commands_Log.txt (
START tail.exe -f C:\Temp\Commands_Log.txt

Some_Commands
Other_Commands

echo.
echo ALL DONE HERE!
echo.
echo IT IS NOW SAFE TO CLOSE THIS WINDOW!
)

"> C: \ Temp \ Commands_Log.txt" लॉग फ़ाइल बनाता है और (कोष्ठक) के अंदर स्थित सभी कमांड से आउटपुट जोड़ता है।

कोष्ठक के अंदर पहला कमांड टेल शुरू करने के लिए होना चाहिए, जो एक नई कमांड विंडो में खुलेगा।

अंत में प्रतिध्वनि अपरिचित उपयोगकर्ताओं के लिए होती है ताकि उन्हें पता चल सके कि सब कुछ पूरा होने पर।

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