中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]关于 If Errorlevel 是否对第三方程序有效的疑惑
作者:
标题: [已结]关于 If Errorlevel 是否对第三方程序有效的疑惑 取消高亮 | 上一主题 | 下一主题
quya
高级用户

五星老土


积分 558
发帖 172
注册 2003-2-9
来自 江苏
状态 离线
『楼 主』:  [已结]关于 If Errorlevel 是否对第三方程序有效的疑惑

Dos  下键入 Help If

第一句的例子是 IF [NOT] ERRORLEVEL number command

但我应用时却似乎一直无效, 无奈只好用 IF [NOT] %ERRORLEVEL%==number command

请达人解答怎么回事, 谢谢!

[ Last edited by HAT on 2008-12-8 at 10:00 ]



我怎么找不到一个比我注册日期早的人? 难道我是传说中的超级管理员? 其实我只是个潜水冠军而已.
2008-6-2 19:11
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 2 楼』:  

Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Test>type test.bat
@echo off
dir C:\test1>nul
if errorlevel 1 (
  echo 错误的命令
) else (
  echo 正确的命令
)
dir C:\test>nul
if errorlevel 1 (
  echo 错误的命令
) else (
  echo 正确的命令
)
C:\Test>test.bat
File Not Found
错误的命令
正确的命令



2008-6-3 00:28
查看资料  发短消息 网志   编辑帖子  回复  引用回复
quya
高级用户

五星老土


积分 558
发帖 172
注册 2003-2-9
来自 江苏
状态 离线
『第 3 楼』:  

谢谢解答. 我以前也曾经这样用过.

可是我在执行第三方程序之后, 比如WINRAR, (WINRAR也有退出码的), 这样做就似乎不行了.

非得用 if %errorlevel%== 不可



我怎么找不到一个比我注册日期早的人? 难道我是传说中的超级管理员? 其实我只是个潜水冠军而已.
2008-6-3 10:03
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 4 楼』:  

能把你的完整代码贴出来看看吗?



2008-6-3 11:46
查看资料  发短消息 网志   编辑帖子  回复  引用回复
quya
高级用户

五星老土


积分 558
发帖 172
注册 2003-2-9
来自 江苏
状态 离线
『第 5 楼』:  

已经证实, 该命令对第三方命令确实无效。

比如有个程序叫drvtypes,用于检测盘符类型,正常情况下退出码0,参数错误则退出码不为零。但以下代码执行均显示“Correct”,碰到任何第三方程序, 我觉得还是用“if %errorlevel%==0”来得保险。
你可以用任何第三方程序试验下。
@echo off
drvtypes>nul
call:test
drvtypes /s>nul
call:test
exit

:test
if errorlevel 0 (echo Correct) else (echo Error)
pause




我怎么找不到一个比我注册日期早的人? 难道我是传说中的超级管理员? 其实我只是个潜水冠军而已.
2008-6-3 14:04
查看资料  发短消息 网志   编辑帖子  回复  引用回复
rs369007
初级用户





积分 147
发帖 131
注册 2008-9-22
状态 离线
『第 6 楼』:  二楼这贴看起来似乎有点不足

type test.bat&pause
rem  测试.bat在cmd当前工作目录
@echo off
dir >C:\test1>nul
if errorlevel 1 (
  echo 错误的命令
) else (
  echo 正确的命令
)
pause

dir >C:\test>nul
if errorlevel 1 (
  echo 错误的命令
) else (
  echo 正确的命令
)
pause
test.bat
pause
echo File Not Found
pause

这样似乎才能看到效果!个人愚见

2008-12-8 09:48
查看资料  发短消息 网志   编辑帖子  回复  引用回复
qzwqzw
银牌会员

天的白色影子


积分 2342
发帖 635
注册 2004-3-6
状态 离线
『第 7 楼』:  


quya确实没有明白if errorlevel 的基本用法
那个判断是大于等于的判断
而不是等于的判断

2008-12-9 08:43
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ghoulrobot
新手上路





积分 10
发帖 7
注册 2008-12-6
状态 离线
『第 8 楼』:  

昨天晚上尝试choice的时候.也没有进行判断.直接一直往下走...

2008-12-9 10:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: