本文将介绍批处理文件中 errorlevel 与 %errorlevel% 的作用和用法。
errorlevel 常用来判断上条命令的执行情况。因此我们可以先看看 if /? 语句的帮助文档。如下:
C:\Users\Administrator>if /?
执行批处理程序中的条件处理。
IF [NOT] ERRORLEVEL number command
IF [NOT] string1==string2 command
IF [NOT] EXIST filename command
NOT 指定只有条件为 false 的情况下,Windows 才应该执行该命令。
ERRORLEVEL number 如果最后运行的程序返回一个等于或大于指定数字的退出代码,指定条件为 true。
.... 省略 ....根据 if 语句的帮助信息,如果我们使用去使用 errorlevel,它的含义是:如果返回的错误码值大于或等于值 的时候,将执行cmmand 操作。实例:
@echo off
copu a.txt bak/b.txt
echo errorlevel=%errorlevel%
if errorlevel 0 echo SUCCESS
pause输出结果:
C:\Users\Administrator\Desktop>test.bat
'copu' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
errorlevel=9009
SUCCESS
请按任意键继续. . .当使用句式时,它含义是:如果返回的错误码值等于值的时候,将执行cmmand操作。实例:
@echo off
copu a.txt bak/b.txt
echo errorlevel=%errorlevel%
if %errorlevel%==0 (
echo success
) else (
echo error
)
pause输出结果:
C:\Users\Administrator\Desktop>test.bat
'copu' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
errorlevel=9009
error
请按任意键继续. . .上面实例中,errorlevel 等于 9009,并不等于0,因此输出“error”。
一般上一条命令的执行结果返回的值只有两个,“成功”用 0 表示;“失败”用 1 表示;实际上,errorlevel 返回值可以在0~255 之间,例如 xcopy 默认的errorlevel 值就有5 个,分别表示5 种执行状态:
0 复制文件成功
1 未找到复制文件
2 用户通过CTRL C 终止了xcopy操作
4 出现了初始化错误
5 出现了磁盘写入错误
if %ERRORLEVEL% 对数值的比较方法不仅仅限于等于,可以使用参数来控制。比如:
rem 小于或等于
if %ERRORLEVEL% LEQ 1 echo SUCCESS全部的比较参数如下:
EQU - 等于,=
NEQ - 不等于,!=
LSS - 小于,<
LEQ - 小于或等于,<=
GTR - 大于,>
GEQ - 大于或等于,>=