2013-02-16 59 views
12

我在寫一個驗證一些文件的批處理文件。當其中一個文件無效時,我希望批處理腳本停止並返回錯誤代碼> 0。下面的代碼似乎可以完成這項工作,但調用「EXIT 2」會關閉運行腳本的命令提示符窗口。如何在不關閉命令提示符窗口的情況下返回錯誤代碼?

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

關於如何在不關閉命令提示符的情況下返回錯誤代碼的任何想法?

+0

要返回任何東西,它必須完成... – vonbrand 2013-02-16 01:43:28

回答

32

要獲得命令的幫助提示命令用自己的/?選項。 Exit /?所示:

退出CMD.EXE程序(命令解釋器)或當前批處理 腳本。

EXIT [/ B] [EXITCODE]

/B指定要退出當前批處理腳本代替 CMD.EXE的。如果從批處理腳本之外執行,則其 將退出CMD.EXE

exitCode指定一個數字號碼。如果指定了/ B,則設置 ERRORLEVEL該號碼。如果退出CMD.EXE,則使用該編號設置退出代碼 。

所以,你要

IF %ERRORLEVEL% GEQ 1 EXIT /B 2 
1

在調用exit之前,您可以使用pause命令。

如果你不喜歡的消息:

pause > nul 
+0

我只是嘗試,現在我必須按Enter鍵,然後窗口關閉... – Martin 2013-02-16 01:24:50

+1

這是什麼暫停,是的。 – 2013-02-16 01:27:02

+0

我不希望窗口關閉。我只想回到命令提示符。 – Martin 2013-02-16 01:28:25

-2

得到了同樣的問題。如果你正在編寫一個批處理(windows shell腳本)。 '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

這一系列命令在最後退出,因爲mvn是批處理文件。你需要調用mvn,而不是隻執行它。如果您在調用其他批處理文件時不使用CALL,那麼您將永遠不會從您調用的任何批處理文件返回,所調用的那個文件將接管並且原始文件不再執行。 此外,文件末尾的CMD調用實際上是打開一個新的命令處理器,所以你會有兩個運行而不是一個。 – David 2015-06-22 12:11:48

相關問題