中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-09 03:21
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]关于 If Errorlevel 是否对第三方程序有效的疑惑 查看 1,612 回复 7
楼 主 [已结]关于 If Errorlevel 是否对第三方程序有效的疑惑 发表于 2008-06-02 19:11 ·  中国 江苏 苏州 电信
高级用户
★★
五星老土
积分 558
发帖 172
注册 2003-02-09 00:00
23年会员
UID 881
性别 男
来自 江苏
状态 离线
Dos 下键入 Help If

第一句的例子是 IF ERRORLEVEL number command

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

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

[ Last edited by HAT on 2008-12-8 at 10:00 ]
我怎么找不到一个比我注册日期早的人? 难道我是传说中的超级管理员? 其实我只是个潜水冠军而已.
2 发表于 2008-06-03 00:28 ·  中国 重庆 九龙坡区 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
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
错误的命令
正确的命令
3 发表于 2008-06-03 10:03 ·  中国 江苏 苏州 常熟市 电信
高级用户
★★
五星老土
积分 558
发帖 172
注册 2003-02-09 00:00
23年会员
UID 881
性别 男
来自 江苏
状态 离线
谢谢解答. 我以前也曾经这样用过.

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

非得用 if %errorlevel%== 不可
我怎么找不到一个比我注册日期早的人? 难道我是传说中的超级管理员? 其实我只是个潜水冠军而已.
4 发表于 2008-06-03 11:46 ·  中国 上海 联通
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
能把你的完整代码贴出来看看吗?
5 发表于 2008-06-03 14:04 ·  中国 江苏 苏州 常熟市 电信
高级用户
★★
五星老土
积分 558
发帖 172
注册 2003-02-09 00:00
23年会员
UID 881
性别 男
来自 江苏
状态 离线
已经证实, 该命令对第三方命令确实无效。

比如有个程序叫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
我怎么找不到一个比我注册日期早的人? 难道我是传说中的超级管理员? 其实我只是个潜水冠军而已.
6 二楼这贴看起来似乎有点不足 发表于 2008-12-08 09:48 ·  中国 四川 攀枝花 电信
初级用户
★★
积分 147
发帖 131
注册 2008-09-22 23:54
17年会员
UID 126352
性别 男
状态 离线
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

这样似乎才能看到效果!个人愚见
7 发表于 2008-12-09 08:43 ·  中国 山西 电信
银牌会员
★★★
天的白色影子
积分 2,343
发帖 636
注册 2004-03-06 00:00
22年会员
UID 19350
性别 男
状态 离线

quya确实没有明白if errorlevel 的基本用法
那个判断是大于等于的判断
而不是等于的判断
8 发表于 2008-12-09 10:14 ·  中国 山东 烟台 联通
新手上路
积分 10
发帖 7
注册 2008-12-06 17:05
17年会员
UID 133076
性别 男
状态 离线
昨天晚上尝试choice的时候.也没有进行判断.直接一直往下走...
论坛跳转: