मैं एक बैच फ़ाइल से एक सर्वर चला रहा हूं और मैं चाहता हूं कि सर्वर आउटपुट को स्क्रीन पर प्रदर्शित किया जाए और लॉग फाइल को भी लिखा जाए। मुझे इस उत्तर से ऐसा करने का एक तरीका मिला :
powershell "startmyserver | tee server.log"
समस्या यह है कि पाइप पहली कमांड को चलाने का कारण बनता है और दूसरी कमांड चलने से पहले पूरी तरह से पूरा हो जाता है। इसका मतलब है कि मैं अपने सर्वर के स्टडआउट की निगरानी नहीं कर सकता, जबकि यह वास्तव में चल रहा है, जो कि मैं करने की कोशिश कर रहा हूं (मैं अभी हाल के लॉग संदेशों की जांच करने के लिए सर्वर को बंद नहीं करना चाहता)।
अधिक सरल उदाहरण के लिए मैंने कोशिश की pause
। ठीक है, pause
पॉवर्सशेल पर मौजूद नहीं है, इसलिए मुझे इसे नेस्टेड cmd
शेल के अंदर चलाना पड़ा :
powershell "cmd /c pause | tee test.txt"
अप्रत्याशित रूप से, इस कमांड को निष्पादित करने के बाद मुझे बस एक चमकता हुआ कर्सर मिलता है। थोड़ी देर के बाद, मैं एक कुंजी दबाता हूं, और फिर "जारी रखने के लिए कोई भी कुंजी दबाएं" प्रकट होता है और लगभग उसी समय फ़ाइल में लिखा जाता है।
जो मैं करना चाहता हूं वह अगले कमांड के लिए लाइन द्वारा स्टडआउट लाइन को स्ट्रीम करने के लिए पाइप है। दूसरे शब्दों में जब भी यह एक ईओएल चरित्र का सामना करता है तो इसे कुछ आउटपुट भेजना चाहिए और यह (मेरे मामले में tee
) पाठ को स्क्रीन पर दिखाई देने का कारण बनता है और साथ ही फ़ाइल में लिखा जाता है। (वास्तव में, मैं इस बात से भी परेशान नहीं हूं कि क्या फाइल लाइन-बाय-लाइन के लिए लिखी गई है, इसे अंत में लिखा जा सकता है, हालांकि यह आदर्श नहीं होगा। मैं सिर्फ लाइनें देखना चाहता हूं। स्क्रीन पर जैसे वे लिखे गए हैं।)
क्या यह कमांड प्रॉम्प्ट और / या पॉवर्सशेल में संभव है?
pause
? मैंने pause
सिर्फ सुविधा के लिए उपयोग किया क्योंकि मैं ऐसा कमांड नहीं चाहता था जो सीधे समाप्त हो जाए और इसलिए यह बताना असंभव है कि क्या कमांड पूरा होने से पहले लाइनों को स्ट्रीम किया गया था
powershell cmd /c pause | tee "test.txt"
हैं तो आप अपने वर्तमान संदर्भ में टी चला रहे हैं। मैं इसे cmd से चला रहा हूं (ps1 नहीं) इसलिए यह कमांड विफल हो जाएगी क्योंकिtee
एक पॉवर्सशेल कमांड है। अगर इस कमांड ने आपके लिए काम किया है, तो मुझे लगता है कि या तो (ए) आपके पासtee
आपके सिस्टम पर कोई दूसरा है या (बी) आपने इसे पॉवर्सशेल के भीतर से चलाया है। न ही जो मेरे उपयोग के मामले हैं।