errorlevel值,即是bat中最后的errerno,同$?变量
现象:
但是你会发现再For循环中会失效!!!
原因:
在for循环中或if语句中多条命令都需要获取返回值等情况下,用errorlevel显得无效,第二条命令开始errorlevel的值都不会变。
此处涉及批处理中的变量延迟问题,并不是errorlevel无效,而是对errorlevel变量的引用采用的是没开启变量延迟情况下的百
分号%。
解决方案:
开启变量延迟的设置:setlocal EnableDelayedExpansion,即延迟环境变量扩展,告诉解释器在遇到复合语句的时候,不要
将其作为一条语句同时处理,而是一条一条地去解释。但是这时如果仍然用百分号%来引用变量是不起作用的,必须用感叹
号!,如!errorlevel!。
setlocal enabledelayedexpansion
cmd1
if!errorlevel! == 1 (
cmd2
echo !errorlevel!
)
网友评论