![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-09 02:20 |
共 47,811 主题排行 / 349,895 发帖 / 今日 0 篇 / 48,253 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 关于 errorlevel 的问题? |
| 可打印版本 862 / 6 |
| 第1楼 mgq | 发表于 2008-07-05 10:02 |
| 中级用户 发帖 103 积分 206 来自 广东 肇庆 | |
|
关于 errorlevel 的问题? 例:
if %errorlevel% == 1 goto end if errorlevel 1 goto end 这两个结果是一样的吗? |
|
| 第2楼 bat-zw | 发表于 2008-07-05 10:18 |
| 金牌会员 发帖 1,276 积分 3,105 | |
|
以下都是一个意思:
if "%errorlevel%"=="1" if %errorlevel% equ 1 if %errorlevel% neq 0(在只有两个返回值时1和0时成立) if errorlevel 1 |
|
| 第3楼 quya | 发表于 2008-07-05 10:22 |
| 高级用户 发帖 172 积分 558 来自 江苏 | |
| 第4楼 bat-zw | 发表于 2008-07-05 10:51 |
| 金牌会员 发帖 1,276 积分 3,105 | |
|
老土,这四句命令确实是一个意思,你所说的还是系统判断返回值的问题,我就再简单说一次吧:
在运行程序时,系统会对每句命令的执行结果返回一个值errorlevel,首先系统会进行判断,判断命令是否成功执行,如命令没有成功执行则返回值为1,如在cmd中依次输入:ping /n 127.1>nul echo %errorlevel%,最后会显示1。如命令成功执行系统就会返回数值0,如在cmd中依次输入:ping /n 1 127.1>nul echo %errorlevel%,最后则会显示0。 我们在对返回值errorlevel进行判断时要注意必须在一行内实现,下面的这段代码是个错误示例: 结果不正常和正常都会显示出来 如修改成如下,就正确了: [ Last edited by zw19750516 on 2008-7-5 at 10:59 AM ] |
|
| 第5楼 quya | 发表于 2008-07-05 12:01 |
| 高级用户 发帖 172 积分 558 来自 江苏 | |
|
还是不敢苟同,既然你以前说过 errorlevel 从高值开始判断, 事实也确实是这样。
那么我们为什么不用if %errorlevel% == 1, 偏要坚持用if errorlevel 1呢? 我们为什么不能为了避免很难察觉的错误,从而抛弃if errorlevel 1的用法呢? 类似的还有 set test=OK &echo %test% 其实 test值是“OK ” 很难发现 set “test=OK” &echo &test% test值是 "OK" set test=OK&echo %test% test值是 "OK" 所以为了防止歧义,我决定抛弃 if errorlevel 的用法。 我再贴一次我以前帖过的代码, 你把 if %errorlevel% == 换成 if errorlevel 试试看。不一样就是不一样啊 。 [ Last edited by quya on 2008-7-5 at 12:09 PM ] |
|
| 第6楼 wxcute | 发表于 2008-07-05 19:01 |
| 中级用户 发帖 211 积分 458 | |
|
if errorlevel 1有点不一样吧,只要errorlevel大于等于1都会执行后面的命令,有的返回值是大于1的,虽然不是很多。
|
|
| 第7楼 zqz0012005 | 发表于 2008-07-05 20:32 |
| 中级用户 发帖 135 积分 297 | |
|
if errorlevel number相当于IF %errorlevel% geq number,而不只是equ
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |