मैं एक त्रुटि के बाद अपनी .bat फ़ाइल कैसे जारी रख सकता हूं


30

मेरे पास विंडोज़ में एक .bat फ़ाइल है जो तीन काम करती है

cmd1 arg1 arg2
cmd2 arg3 
cmd3 arg4 arg5 arg6

कभी-कभी cmd1 विफल हो सकता है और यह ठीक है, मैं cmd2 और cmd3 को जारी रखना और निष्पादित करना चाहूंगा। लेकिन मेरा बल्ला cmd1 पर रुक गया। इससे कैसे बचा जा सकता है?

स्पष्टता के लिए अद्यतन - ये अन्य .bat फाइलें नहीं हैं, वे exe कमांड हैं। उम्मीद है कि मुझे इसे हासिल करने के लिए .bat फाइलों का एक पेड़ बनाने की जरूरत नहीं है।


आपको कमांड का उपयोग शुरू करने में सक्षम होना चाहिए cmd /C
डेर होकस्टाप्लर

1
आपको जो काम नहीं कर रहा है उसका एक विशिष्ट कोड उदाहरण दिखाना होगा। यदि कोई कमांड किसी त्रुटि के साथ विफल हो जाती है तो बैच फाइलें सामान्य रूप से स्वचालित रूप से समाप्त नहीं होती हैं। यदि कोई सिंटैक्स त्रुटि है, तो बैच फ़ाइलें समाप्त हो जाती हैं। यदि आपका कोड किसी exe त्रुटि पर बाहर निकल रहा है, तो आपके कोड में तर्क होना चाहिए जो उस व्यवहार का कारण बन रहा है।
डेबनहम

जवाबों:


18

एक अन्य विकल्प एम्पियरस्टैंड ( &) का उपयोग करना है

cmd1 & cmd2 & cmd3

यदि आप एक डबल का उपयोग करते हैं, तो यह केवल तभी करता है जब पिछली कमांड सफलतापूर्वक पूरा हो जाए ( %ERRORLEVEL%==0)

cmd1 && cmd2 && cmd3

यदि आप एक डबल पाइप ( ||) का उपयोग करते हैं , तो यह केवल अगला कमांड चलाता है यदि पिछला एक त्रुटि कोड के साथ पूरा होता है ( %ERRORLEVEL% NEQ 0)

cmd1 || cmd2 || cmd3


क्या मैं ऐसा कर सकता हूं जब पासिंग आर्ग भी हो सकता है? मैंने बस कोशिश की और यह काम नहीं कर पाया।
कन्फ्यूस्डनोब

@ConfusedNoob मैं हर समय करता हूं ... मेरे पास एक CHKDSKकमांड है, तर्कों के साथ, यह काम करता है। मैं टाइप check D: & check E: & check F:करता हूं , और यह काम करता है। BAT फ़ाइल में दिए गए तर्कों में /perf /f /r /b /scanस्विच शामिल हैं
कनाडाई ल्यूक रिइनसेट MONICA

2
अच्छा था! मुझे एक विचार आया कि कैसे कई रीट्रीज़ को लागू किया जाए: cmd || सीएमडी || ... सफल होने तक अगले cmd को निष्पादित करेगा
iTake

1
यह लंबी स्क्रिप्ट को अपठनीय बनाता है, क्या कोई अन्य तरीका नहीं है?
जनवरी

1
@CanadianLuke खैर बैच विंडोज़ बैच फ्रेमवर्क है। आप सैकड़ों कमांड को गैर संवादात्मक रूप से कैसे चलाते हैं? क्या पावर शेल में बेहतर दृष्टिकोण है? क्या वहां चलना बुरा है?
जनवरी

11

Cmds को मानकर अन्य .bat फाइलें इस तरह कमांड्स को स्टैक करती हैं:

 call cmd1
 call cmd2
 call cmd3

10

यह मेरे लिए काम किया:

cmd.exe /c cmd1 arg1
cmd2
...

यह cmd.exeविंडोज कमांड दुभाषिया के एक नए उदाहरण में कमांड को निष्पादित करने के लिए उपयोग करता है, इसलिए एक असफल कमांड बैच स्क्रिप्ट को बाधित नहीं करता है। /cझंडा दुभाषिया जल्द ही आदेश खत्म क्रियान्वित करने के रूप में के रूप में समाप्त करने के लिए कहता है।

cmd2पहला आदेश विफल होने पर भी निष्पादित होता है। cmd /?अधिक जानकारी के लिए विंडोज कमांड प्रॉम्प्ट से देखें ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.