2010-01-11 10 views
20

मैं एक बैच स्क्रिप्ट पर परिष्कृत स्पर्श डाल रहा हूं जो स्थानीय रूप से संपादित वेबसाइट की सामग्री को इंटरनेट पर स्थानांतरित करता है।बैच आउटपुट को छिपाने के लिए कैसे करें

स्क्रिप्ट एक कंसोल विंडो में खुलती है, और कुछ गलत होने पर प्रशासक को देखने की ज़रूरत होती है। उस स्थिति में, हालांकि, आउटपुट ई-मेल के रूप में भेजा जा रहा है, इसलिए उत्पादन को प्रदर्शित करने और उपयोगकर्ता को भ्रमित करने वाले उपयोगकर्ता को भ्रमित करने की कोई आवश्यकता नहीं है। मुझे केवल कुछ पंक्तियां प्रदर्शित करने की आवश्यकता है (कहें, "सिंक्रनाइज़ेशन प्रारंभ करना ..." और "सिंक्रोनिसेशन पूर्ण")।

क्या कोई बैच स्क्रिप्ट में आउटपुट को रोकने का तरीका सोच सकता है? कुल "गूंज बंद" की तरह?

एक साधारण

my_batch_file > nul 

इसे काट नहीं होगा, क्योंकि जैसा कि मैंने कहा, कुछ चीजें मैं दिखाने की जरूरत है।

उत्तर

34

विंडोज वास्तव में stdout और stderr की धारणा है चला जाता है। यहाँ एक उदाहरण है:

test.bat:

@echo off 
echo verbose stuff 1 
echo verbose stuff 2 
echo verbose stuff 3 
echo important stuff! >&2 
echo verbose stuff 4 

आप के रूप में 'test.bat' यह चलाते हैं तो आप पूर्ण उत्पादन मिलेगा। यदि आप इसे 'test.bat >nul' के रूप में चलाते हैं तो आपको केवल 'महत्वपूर्ण' आउटपुट (& 2)

+0

हां, यह मेरे लिए पूरी तरह से काम करता है। धन्यवाद! –

0

आप stdout के बजाय stderr पर दिखाने की कुछ चीज़ें लिख सकते हैं।

या वैकल्पिक रूप से, उन हिस्सों के आउटपुट को रीडायरेक्ट करें जिन्हें आप छुपाएं चाहते हैं।

+0

क्षमा करें, मैंने अपना उदाहरण मिश्रित किया है, मैं यहां एक विंडोज सिस्टम पर हूं। क्या वहां काम नहीं करता है? –

+2

ओह आप एक शाब्दिक बैच फ़ाइल के बारे में बात कर रहे हैं। उस स्थिति में, आप उन हिस्सों को अलग कर सकते हैं जिन्हें आप अलग बैच स्क्रिप्ट में नहीं दिखाना चाहते हैं, और आउटपुट को रीडायरेक्ट करते हुए इसे अपने प्राथमिक से कॉल करें। साथ ही, '@' उपसर्ग को ध्यान में रखें, जो कमांड को मुद्रित होने से रोकता है। –

7

अपने बैच स्क्रिप्ट ही दूसरा मंगलाचरण के

@echo off 
if "%1" == "1" goto else 
echo start 
call %0 1 > nul 
echo done 
goto done 
:else: 
echo do stuff 
:done: 

stdout चला सकते हैं NUL को

संबंधित मुद्दे