2012-08-07 16 views
14

में/किसी और बयान एक खोल स्क्रिप्ट मैं निम्नलिखित कोड है में:अगर/फिर Windows बैच

if echo Mr.32 ; then 
    echo Success 
else 
    echo Failed 
    exit 
fi 

विंडोज बैच फ़ाइलों के लिए बराबर वाक्य रचना क्या है?

+3

में आप हमारे साथ साझा कर सकते हैं कि तुम क्या अब तक की कोशिश की? – Levon

+0

http://mevaldez.home.mchsi.com/Batch.pdf – larsks

+1

FYI: 'अगर eval echo foo'' echo foo' होना चाहिए; eval का उपयोग कर कोई उद्देश्य नहीं है। यह भी देखें http://mywiki.wooledge.org/BashFAQ/048 –

उत्तर

26

मुझे एक कठिन समय लग रहा है जब ईसीएचओ वापस लौटाए गए ERRORLEVEL के साथ असफल हो जाएगा। मुझे लगता है कि आउटपुट को फ़ाइल में रीडायरेक्ट किया गया है और लक्ष्य ड्राइव पूर्ण हो गया है, तो यह असफल हो सकता है।

सीपीटीएचमर ने ERRORLEVEL का उपयोग करके एक अच्छा समाधान पोस्ट किया है, हालांकि यह अनावश्यक रूप से गोटो का उपयोग करता है। इसे बिना गोटो के इस्तेमाल किया जा सकता है:

ECHO Mr.32 
if errorlevel 1 (
    echo Failed 
    exit /b 
) else (
    echo Success 
) 

किसी भी आदेश की सफलता या विफलता पर कार्रवाई करने का एक आसान तरीका है।

command && success action || failure action 

अपने मामले

ECHO Mr.32&& (
    echo Success 
) || (
    echo Failed 
    exit /b 
) 
+2

यदि त्रुटिलेवल 1 (कमांड समूह 1) अन्य (कमांड समूह 2) ऊपर दिए गए किसी भी रिटर्न कोड के लिए कमांड समूह 1 निष्पादित करेगा। (यानी: कमांड समूह 1 विफल है और कमांड समूह 2 सफलता है) – cptHammer

+0

"कमांड एंड सफलता सफलता || विफलता कार्रवाई" यह बहुत अच्छा है इस सवाल का जवाब। सहायता के लिए धन्यवाद! –

12

मुझे लगता है कि कुछ इस तरह चाल कर सकता:

REM run the command 
ECHO Mr.32 
IF ERRORLEVEL 1 GOTO failLabel 

:successLabel 
REM put code to execute in case of success here. 
ECHO Success 
GOTO endLabel 

:failLabel 
REM put code here that should be executed in case of failure. 
ECHO Failed 

:endLabel 

इसका मतलब यह है आदेश आप (यहाँ: MR.32 गूंज) परीक्षण करना चाहते हैं सफलता और कुछ भी विफलता (सावधान पर उच्च पर रिटर्न 0: इको अधिकांश विंडोज़ ओएस में कुछ भी वापस नहीं आएगा और इसलिए, इस स्क्रिप्ट में परीक्षण किया गया वास्तविक मान शायद स्क्रिप्ट से पहले निष्पादित अंतिम कमांड से रिटर्न कोड है। आप शायद कमांड के साथ परीक्षण करने के बेहतर हैं: "DIR someFile.txt "अगर कुछfile.txt मौजूद है और 1 अन्यथा है तो 0 वापस आ जाएगा।)

यह सच है क्योंकि डबेंहम ने बताया कि यह संरचना बहुत सारे गोटो का उपयोग करता है। ऐसा इसलिए है क्योंकि यह गोटो संरचना केवल एक ही है जिसे सभी विंडोज संस्करणों में ठीक समझा जाएगा। अधिक कॉम्पैक्ट संस्करण समय के साथ दिखाई दिए लेकिन वे केवल हाल के विंडोज संस्करणों पर ही काम करेंगे।

+0

हाँ echo Mr.32 0 देता है अगर इसकी सफलता पूर्ण हो जाती है लेकिन यहां यह असफल लेबल में जाती है ... –

+0

अधिकांश विंडोज संस्करणों में, इको कमांड कुछ भी नहीं देता है। इसलिए, यदि स्क्रिप्ट निष्पादन विफल होने से पहले अंतिम जारी आदेश विफल हुआ, तो यह असफल संदेश देगा। दूसरी तरफ, यदि इस स्क्रिप्ट से पहले निष्पादित अंतिम आदेश सफल था, तो आपको सफलता संदेश मिलेगा। – cptHammer

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