本文将介绍批处理文件中 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 - 大于或等于,>=