2010-07-21 16 views
5

मुझे एक बैच फ़ाइल मिली है जो कई चीजें करता है। अगर उनमें से एक विफल रहता है, तो मैं पूरे कार्यक्रम से बाहर निकलना चाहता हूं। उदाहरण के लिए:त्रुटि पर बैच प्रोग्राम से कैसे बाहर निकलें?

@echo off 
type foo.txt 2>> error.txt >> success.txt 
mkdir bob 

फ़ाइल foo.txt नहीं पाया जाता है तो मैं error.txt फ़ाइल के साथ जोड़ दिया stderr संदेश, और foo.txt की सामग्री success.txt में जोड़ा जाता है चाहते हैं। असल में, यदि टाइप कमांड एक stderr देता है तो मैं बैच फ़ाइल से बाहर निकलना चाहता हूं और एक नई निर्देशिका नहीं बनाना चाहता हूं। आप कैसे बता सकते हैं कि कोई त्रुटि आई है और यह तय करें कि आपको अगली कमांड जारी रखने की आवश्यकता है या नहीं?

+0

मैं कोड जोड़ा अगर त्रुटि नहीं है 0 EXIT/B echo% errorlevel% mkdir bob कमांड से पहले, लेकिन परवाह किए बिना ERRORLEVEL का मूल्य (यानी। 0 या 1) निर्देशिका अभी भी बनाई गई है। तो मूल रूप से, ERRORLEVEL को एक अलग मान के साथ सेट किया जा रहा है कि टाइप कमांड फ़ाइल को पाता है या नहीं, लेकिन प्रोग्राम बाहर नहीं निकल रहा है। विचार? – Notorious2tall

उत्तर

10

उपयोग ERRORLEVEL पिछला आदेश के निकास कोड की जाँच करने के:

if ERRORLEVEL 1 exit /b 

संपादित: प्रलेखन कहते हैं, "हालत सच है अगर पिछले आदेश के निकास कोड बराबर या एक्स से अधिक है" (आप इसे if /? के साथ जांच सकते हैं)। इस के अलावा, आप भी multple आदेश पर अमल करने के लिए करता है, तो हालत सच है अगर फाइल

if exist foo.txt echo yada yada 

के साथ मौजूद है की जाँच कर सकते हैं:

if ERRORLEVEL 1 (echo error in previous command & exit /b) 

या

if ERRORLEVEL 1 (
    echo error in previous command 
    exit /b 
)