28

我正在编写一个验证几个文件的批处理文件。当其中一个文件无效时,我希望批处理脚本停止并返回错误代码 >0。下面的代码似乎可以完成这项工作,但调用“EXIT 2”会关闭运行脚本的命令提示符窗口。

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

关于如何在不关闭命令提示符的情况下返回错误代码的任何想法?

4

3 回答 3

58

要获得命令提示符命令的帮助,请使用它们的 /? 选项。 Exit /?显示:

退出 CMD.EXE 程序(命令解释器)或当前批处理脚本。

退出 [/B] [退出代码]

/B 指定退出当前批处理脚本而不是 CMD.EXE。如果从批处理脚本外部执行,它将退出 CMD.EXE

exitCode 指定一个数字。如果指定了 /B,则设置 ERRORLEVEL 该数字。如果退出 CMD.EXE,则使用该编号设置进程退出代码。

所以你要

IF %ERRORLEVEL% GEQ 1 EXIT /B 2
于 2013-02-16T01:28:08.663 回答
3

您可以pause在调用 exit 之前使用该命令。

如果您不喜欢该消息:

pause > nul

如果您不想关闭窗口,而只是返回命令提示符,则应使用

EXIT /B
于 2013-02-16T01:19:35.510 回答
-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 执行后应保持在提示符处。

于 2014-08-22T05:55:11.117 回答