中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-20 14:50
中国DOS联盟论坛 » DOS学习入门 & 精彩文章 (教学室) » 请教批处理的问题 查看 2,929 回复 16
楼 主 请教批处理的问题 发表于 2006-03-04 11:25 ·  中国 河北 邯郸 联通
初级用户
积分 34
发帖 9
注册 2006-03-02 20:04
20年会员
UID 51248
性别 男
状态 离线
@echo off
choice /c:tde type,del,end
if errorlevel 3 goto c
if errorlevel 2 goto b
if errorlevel 1 goto a
:a
c:\
type 222.txt
echo.
pause
goto b
:b
c:
del 222.txt
cls
goto c
:c
echo good bye

============

@echo off
choice /c:tde type,del,end
if errorlevel 3 goto a
if errorlevel 2 goto b
if errorlevel 1 goto c
:a
c:\
type 222.txt
echo.
pause
goto b
:b
c:
del 222.txt
cls
goto c
:c
echo good bye

为什么第一个按照命令执行 而第二个却按照正常顺序执行???
2 发表于 2006-03-04 11:34 ·  中国 北京 平谷区 联通
银牌会员
★★★
DOS联盟捡破烂的
积分 1,144
发帖 425
注册 2005-10-20 00:00
20年会员
UID 43784
来自 北京
状态 离线
if errorlevel 3 goto c
if errorlevel 2 goto b
if errorlevel 1 goto a

if errorlevel 3 goto a
if errorlevel 2 goto b
if errorlevel 1 goto c
能一样吗?顺序本身就不一样,执行的顺序也就不一样了
3 发表于 2006-03-04 12:31 ·  中国 河北 邯郸 联通
初级用户
积分 34
发帖 9
注册 2006-03-02 20:04
20年会员
UID 51248
性别 男
状态 离线
@echo off
choice /c:tde type,del,end
if errorlevel 1 goto c
if errorlevel 2 goto b
if errorlevel 3 goto a
:a
c:\
type 222.txt
echo.
pause
goto b
:b
c:
del 222.txt
cls
goto c
:c
echo good bye

这个呢
4 发表于 2006-03-04 13:14 ·  中国 北京 顺义区 联通
银牌会员
★★★
DOS联盟捡破烂的
积分 1,144
发帖 425
注册 2005-10-20 00:00
20年会员
UID 43784
来自 北京
状态 离线
这个啊,呵呵,不管你按哪个最后就显示 good bye,呵呵
5 发表于 2006-05-28 14:44 ·  中国 安徽 马鞍山 电信
新手上路
积分 18
发帖 10
注册 2006-03-16 04:28
20年会员
UID 52144
状态 离线
不太看的懂,晕。
6 发表于 2006-05-31 14:41 ·  中国 陕西 西安 雁塔区 电信
新手上路
积分 15
发帖 11
注册 2006-05-29 20:21
20年会员
UID 56215
性别 男
状态 离线
批处理很简单啊
7 发表于 2006-06-03 13:20 ·  中国 浙江 杭州 电信
新手上路
积分 8
发帖 4
注册 2006-06-03 13:09
20年会员
UID 56482
性别 男
状态 离线
新手上路 学习了 谢谢
8 发表于 2006-06-03 15:17 ·  中国 上海 闵行区 电信
中级用户
★★
论坛第一菜鸟
积分 361
发帖 166
注册 2006-04-15 13:23
20年会员
UID 53870
状态 离线
@echo off
choice /c:tde type,del,end
if errorlevel 1 goto c
if errorlevel 2 goto b
if errorlevel 3 goto a
:a
c:\
type 222.txt
echo.
pause
goto b
:b
c:
del 222.txt
cls
goto c
:c
echo good bye

这个呢

这个啊,呵呵,不管你按哪个最后就显示 good bye,呵呵


严重支持4楼的观点

if errorlevel n <command>
指的是在错误返回码大于或等于n时,执行后面的命令
所以对于:
if errorlevel 1 goto c
来说,不管选什么都会转移到 :c ,等着你的只有 显示 good bye 了

所以在判断错误返回码时,一定要从最高位开始判断!

[ Last edited by xjmxjm1234 on 2006-6-3 at 15:19 ]
Diskette Operating System
9 发表于 2006-06-03 20:37 ·  中国 广东 广州 海珠区 电信
新手上路
积分 12
发帖 5
注册 2006-06-03 05:02
20年会员
UID 56465
性别 男
状态 离线
新手上路 学习了 谢谢
10 发表于 2006-06-26 17:43 ·  中国 安徽 芜湖 电信
高级用户
★★★
积分 866
发帖 415
注册 2005-12-04 11:19
20年会员
UID 46459
状态 离线
怎么我运行这个批处理时却进入了一个死循环.
11 发表于 2006-06-26 18:28 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
执行完a:后少了个goto b
12 发表于 2006-06-27 11:59 ·  IANA 本机地址
初级用户
积分 90
发帖 38
注册 2006-01-06 18:41
20年会员
UID 48522
状态 离线
楼主让我们玩“大家来找碴”的游戏吗?BS一下。
13 发表于 2006-06-27 15:01 ·  中国 上海 虹口区 电信
初级用户
积分 194
发帖 35
注册 2005-01-10 00:00
21年会员
UID 35249
性别 男
来自 上海
状态 离线
if %errorlevel%==1 ...
if %errorlevel%==2 ...
14 发表于 2006-06-27 17:38 ·  中国 四川 南充 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
20年会员
UID 42843
性别 男
来自 四川南充
状态 离线
楼主的批处理里的GOTO用的有的问题:看下面的
@echo off
choice /c:tde type,del,end
if errorlevel 3 goto c
if errorlevel 2 goto b
if errorlevel 1 goto a
:a
c:\
type 222.txt
echo.
pause
goto end
:b
c:
del 222.txt
cls
goto end
:c
echo good bye
:end
15 发表于 2006-06-29 16:03 ·  中国 广东 深圳 天威有线宽带(关内)
初级用户
积分 96
发帖 44
注册 2006-06-26 17:52
19年会员
UID 57603
性别 男
来自 深圳
状态 离线
choice /c:tde type,del,end
什么意思!!
论坛跳转: