由于ERRORLEVEL是一个环境变量,在我有机会在我的批处理文件中检查它之前,它的值是否可以更改?
答案 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%
...