ERRORLEVEL可靠吗?

时间:2010-08-11 10:56:52

标签: batch-file

由于ERRORLEVEL是一个环境变量,在我有机会在我的批处理文件中检查它之前,它的值是否可以更改?

2 个答案:

答案 0 :(得分:3)

环境变量属于当前的“进程”,因此无法从外部进行更改。如果在批处理文件中检查相关命令后检查错误级别,则应检查正确的值。

您可以通过打开两个命令窗口并进入第一个命令窗口来确认:

c:> set errorlevel=7

然后是第二个:

c:> set errorlevel=9

然后回到第一个并且:

c:> echo %errorlevel%
7

顺便设置errorlevel环境变量时应该非常小心。该特定变量是一个特殊的变量,当你没有专门设置它时,它将自动提供前一个程序的返回代码。

明确地设置它会覆盖此行为,唯一的恢复方法是使用if errorlevel N而不是环境变量(它绕过环境变量),或使用set errorlevel=删除覆盖。

答案 1 :(得分:0)

%errorlevel%(它不是区分大小写)是一个非常特殊的环境变量。它完全不是用户设置或批处理脚本内的设置。

此外,您可能遇到执行调用set errorlevel=15的问题,但您成功执行set命令的事实可能已重置您期望的%errorlevel%现在evaluete 0

你需要吗

评估%errorlevel%环境变量的唯一“合法”方法是使用重复的if errorlevel语句:

if errorlevel 0 do somecommand
if errorlevel 1 do somethingelse
...
if errorlevel 255 do lastalternative
其他一切都很危险。如果你确实需要在几行之后使用当前的%errorlevel%,那么请使用类似

的内容
if errorlevel 0 do set myerrorlevel=0 

然后读出%myerrorlevel% ...