2013-02-16 71 views
12

मैं एक बैच फ़ाइल लिख रहा हूं जो कुछ फाइलों को मान्य करता है। जब फ़ाइल में से कोई एक मान्य नहीं है, तो मैं बैच स्क्रिप्ट को रोकना चाहता हूं और एक त्रुटि कोड> 0 लौटाता हूं। नीचे दिया गया कोड नौकरी करने लगता है, लेकिन "एक्स्टिट 2" को कॉल करने से कमांड प्रॉम्प्ट विंडो बंद हो जाती है जिसमें स्क्रिप्ट चल रही थी।कमांड प्रॉम्प्ट विंडो बंद किए बिना त्रुटि कोड कैसे वापस करें?

:Validate 
SETLOCAL 
Validator %1 
IF %ERRORLEVEL% GEQ 1 EXIT 2 
ENDLOCAL 

कमांड प्रॉम्प्ट को बंद किए बिना त्रुटि कोड को वापस करने के बारे में कोई विचार?

+0

कुछ भी वापस करने के लिए, इसे खत्म करना होगा ... – vonbrand

उत्तर

32

आदेश के लिए मदद प्राप्त करने के शीघ्र आदेशों उनकी/का उपयोग करें? विकल्प। Exit /? शो:

CMD.EXE कार्यक्रम (कमांड दुभाषिया) या मौजूदा बैच स्क्रिप्ट इस्तीफा।

बाहर निकलें [/ B] [exitCode]

/बी CMD.EXE के स्थान पर वर्तमान बैच स्क्रिप्ट बाहर निकलने के लिए निर्दिष्ट करता है। यदि बैच स्क्रिप्ट के बाहर से निष्पादित किया गया है, तो यह सीएमडी.एक्सई

निकास कोड एक संख्यात्मक संख्या निर्दिष्ट करता है। अगर/बी निर्दिष्ट है, तो उस नंबर को ERRORLEVEL सेट करता है। यदि CMD.EXE छोड़ना है, तो उस नंबर के साथ प्रक्रिया निकास कोड सेट करें।

तो आप चाहते हैं

IF %ERRORLEVEL% GEQ 1 EXIT /B 2 
1

आप बाहर निकलने से पहले pause कमांड का उपयोग कर सकते हैं।

आप संदेश पसंद नहीं है:

pause > nul 
+0

मैंने अभी कोशिश की है और अब मुझे एंटर दबाएं और फिर विंडो बंद हो जाएगी ... – Martin

+1

यह विराम क्या है, हाँ। –

+0

मैं नहीं चाहता कि खिड़की बंद हो। मैं बस कमांड प्रॉम्प्ट पर वापस जाना चाहता हूं। – Martin

-2

एक ही मुद्दा मिल गया। यदि आप एक बैच (विंडोज़ शैल स्क्रिप्ट) लिख रहे हैं। 'cmd' इसे आपके लिए करना चाहिए। यह बैच से बाहर नहीं निकलता है और कमांड प्रॉम्प्ट पर रहता है। मेरी समस्या हल हो गई। पूर्व के लिए : cd "\view\Flex Builder 3\gcc-mvn" set path="c:\view\jdk1.7.0_02\bin";"c:\view\apache-maven-3.0.5\bin";%path% mvn sonar:sonar cmd निष्पादन के बाद तत्काल रहना चाहिए।

+2

आदेशों की यह श्रृंखला अंत में निकलती है क्योंकि एमवीएन बैच फ़ाइल है। आपको इसे निष्पादित न करने के लिए, एमवीएन को कॉल करने की आवश्यकता है। यदि आप अन्य बैच फ़ाइलों को कॉल करते समय कॉल का उपयोग नहीं करते हैं तो आप कभी भी किसी भी बैच फ़ाइल से वापस नहीं आते हैं, जिसे कॉल किया जाता है और मूल वाला अब निष्पादित नहीं होता है। इसके अलावा, आपकी फ़ाइल के अंत में सीएमडी कॉल वास्तव में एक नया कमांड प्रोसेसर खोल रहा है, इसलिए आपके पास दो की बजाए दो चलेंगे। – David