【批处理高手进来拿分50】errorlevel与%errorlevel%的区别
4个回答
展开全部
判断上个命令的返回值,if errorlevel 数值 command 语句
这个语句是用于判断上一个命令执行的返回值errorlevel,我们还是先来看看例子,
例13
@echo off
net user
if %errorlevel% == 0 (echo net user 命令执行成功) else (echo net user 命令执行失败)
Pause
注意:%errorlevel% 这是个系统变量,所以用两个%括起来,这里的==为两个连续的=
也许有些朋友说我上面的例子是不是写错了?按照语法应该写成“if errorlevel 0”才对的呀。
如果你是这样用的话,那你就错了,还真不信呀?OK,我们来设计个实验看看
例14
@echo off
set /p input=请输入任意一条命令:
if errorlevel 0 (echo %input% 命令执行成功) else (echo %input% 命令执行失败)
pause
用这种语法,不管你前面的命令,是否执行成功,它都会认为命令成功了。何解?
if errorlevel 语句的特点:
当使用 if errorlevel 0 cmmand 句式时,它的含义是:如果返回的错误码值大于或等于0 的时候,将执行cmmand
操作;
当使用 if %errorlevel%==0 cmmand 句式时,它含义是:如果返回的错误码值等于0 的时候,将执行cmmand操作。
一般上一条命令的执行结果返回的值只有两个,"成功"用0 表示 "失败"用 1 表示,实际上,errorlevel 返回值可
以在0~255 之间,
例如xcopy 默认的errorlevel 值就有5 个,分别表示5 种执行状态:
0复制文件成功
1 未找到复制文件
2 用户通过CTRL C 终止了xcopy操作
4 出现了初始化错误
5 出现了磁盘写入错误
--------------------
如果你认真看完,绝对有收获。现在我都不用errorlevel了,一直是用%errorlevel%
这个语句是用于判断上一个命令执行的返回值errorlevel,我们还是先来看看例子,
例13
@echo off
net user
if %errorlevel% == 0 (echo net user 命令执行成功) else (echo net user 命令执行失败)
Pause
注意:%errorlevel% 这是个系统变量,所以用两个%括起来,这里的==为两个连续的=
也许有些朋友说我上面的例子是不是写错了?按照语法应该写成“if errorlevel 0”才对的呀。
如果你是这样用的话,那你就错了,还真不信呀?OK,我们来设计个实验看看
例14
@echo off
set /p input=请输入任意一条命令:
if errorlevel 0 (echo %input% 命令执行成功) else (echo %input% 命令执行失败)
pause
用这种语法,不管你前面的命令,是否执行成功,它都会认为命令成功了。何解?
if errorlevel 语句的特点:
当使用 if errorlevel 0 cmmand 句式时,它的含义是:如果返回的错误码值大于或等于0 的时候,将执行cmmand
操作;
当使用 if %errorlevel%==0 cmmand 句式时,它含义是:如果返回的错误码值等于0 的时候,将执行cmmand操作。
一般上一条命令的执行结果返回的值只有两个,"成功"用0 表示 "失败"用 1 表示,实际上,errorlevel 返回值可
以在0~255 之间,
例如xcopy 默认的errorlevel 值就有5 个,分别表示5 种执行状态:
0复制文件成功
1 未找到复制文件
2 用户通过CTRL C 终止了xcopy操作
4 出现了初始化错误
5 出现了磁盘写入错误
--------------------
如果你认真看完,绝对有收获。现在我都不用errorlevel了,一直是用%errorlevel%
参考资料: 这是我收藏的一个批处理教程讲的,教程上标注的来源是“批处理之家”bbs.bathome.cn
展开全部
区别在使用逻辑判断语句if时体现:
就一句话:
if errorlevel 1 完全等价于等价于 if %errorlevel% geq 1
也就是说在条件语句中"errorlevel 1"隐式
表示了"%errorleve%>=1"这个条件
就一句话:
if errorlevel 1 完全等价于等价于 if %errorlevel% geq 1
也就是说在条件语句中"errorlevel 1"隐式
表示了"%errorleve%>=1"这个条件
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第二种是错误用法。第一种用法:
if errorlevel 1 statement
大多数dos程序成功的返回值都是0{排除少部分程序},返回值1是失败或者错误。而较大的返回值先于0返回,所以一般来说判断返回值1即可,比如:
if errorlevel 1 goto do something
if errorlevel 0 goto do soemthine
errorlevel的引用时不需要%%来包围的。
if errorlevel 1 statement
大多数dos程序成功的返回值都是0{排除少部分程序},返回值1是失败或者错误。而较大的返回值先于0返回,所以一般来说判断返回值1即可,比如:
if errorlevel 1 goto do something
if errorlevel 0 goto do soemthine
errorlevel的引用时不需要%%来包围的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2009-11-27
展开全部
批处理中如果使用"Set ErrorLevel=n"这样的语句,那么在之后使用%ErrorLevel%的值都将是n,而不是前一句返回的错误码。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询