永发信息网

【批处理高手进来拿分50】errorlevel与%errorlevel%的区别

答案:4  悬赏:0  手机版
解决时间 2021-11-24 02:29
  • 提问者网友:浪荡绅士
  • 2021-11-23 17:52
【批处理高手进来拿分50】errorlevel与%errorlevel%的区别
最佳答案
  • 五星知识达人网友:一秋
  • 2021-11-23 19:13
判断上个命令的返回值,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%参考资料:这是我收藏的一个批处理教程讲的,教程上标注的来源是“批处理之家”bbs.bathome.cn
全部回答
  • 1楼网友:愁杀梦里人
  • 2021-11-23 21:41
批处理中如果使用"Set ErrorLevel=n"这样的语句,那么在之后使用%ErrorLevel%的值都将是n,而不是前一句返回的错误码。
  • 2楼网友:由着我着迷
  • 2021-11-23 21:07
区别在使用逻辑判断语句if时体现:
就一句话:
if errorlevel 1 完全等价于等价于 if %errorlevel% geq 1
也就是说在条件语句中"errorlevel 1"隐式
表示了"%errorleve%>=1"这个条件
  • 3楼网友:鸠书
  • 2021-11-23 20:33
第二种是错误用法。第一种用法:

if errorlevel 1 statement

大多数dos程序成功的返回值都是0{排除少部分程序},返回值1是失败或者错误。而较大的返回值先于0返回,所以一般来说判断返回值1即可,比如:

if errorlevel 1 goto do something
if errorlevel 0 goto do soemthine

errorlevel的引用时不需要%%来包围的。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯