2012-04-27 18 views
20

चलें कहते हैं कि हम निम्न आदेश के साथ खिड़कियों में एक खाली फ़ाइल बनाना चाहते:फ़ाइल पुनर्निर्देशन

type nul > C:\does\not\exist\file.txt 

निर्देशिका मौजूद नहीं है, इसलिए हम त्रुटि मिलती है:

The system cannot find the path specified 

आप %errorlevel% प्रिंट आउट तो उत्पादन होता है:

echo %errorlevel% 
0 

फिर भी आदेश सफलता नहीं था cessful!

मैंने देखा, कि विंडोज़ पिछले आदेश का %errorlevel% निर्धारित नहीं करता है अगर आप पुनर्निर्देशन का उपयोग ..

वहाँ इस के चारों ओर एक रास्ता नहीं है?

उत्तर

27

आप निम्न का उपयोग कर सकते हैं:

C:\>type nul > C:\does\not\exist\file.txt && echo ok || echo fail 
The system cannot find the path specified. 
fail 

C:\>echo %errorlevel% 
1 

मैं हमेशा मान लिया & & और || ऑपरेटरों ने ERRORLEVEL का उपयोग किया, लेकिन स्पष्ट रूप से नहीं।

बहुत उत्सुक है कि ERRORLEVEL केवल पुनर्निर्देशन त्रुटि के बाद सेट किया गया है यदि आप || ऑपरेटर। मैं कभी भी अंदाजा नहीं लगा सकता था। यदि आपके उत्कृष्ट प्रश्न के लिए नहीं तो मैं कभी भी परीक्षण करने के लिए परेशान होगा।

तो तुम सब करने की पुनर्निर्देशन विफलता पर ERRORLEVEL सेट किया गया है चाहते हैं, तो निश्चित रूप से आप बस कर सकते हैं:

type nul > C:\does\not\exist\file.txt || rem 
+1

@AndriyM - क्या आप वाकई इससे पहले कि आप परीक्षण शुरू कर दिया ERRORLEVEL 0 था कर रहे हैं? '&& REM' XP या Vista पर मेरे लिए ERRORLEVEL को "ठीक" नहीं करता है। – dbenham

+0

आप सही हैं, यह '||' के साथ परीक्षण के बाद '1' सेट था। आपकी टिप्पणी के बाद मैंने दोबारा जांच की और यह '0' था। मुझे सही करने के लिए धन्यवाद। –

+0

एक वास्तव में अप्रत्याशित व्यवहार है, लेकिन संभवतः त्रुटि निवारण को पुनर्निर्देशन – jeb

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