2013-02-16 61 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

相关问题