中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-28 13:27
中国DOS联盟论坛 » DOS疑难解答 & 问题讨论 (解答室) » 能不能在批处理执行过程中按Ctrl + C直接退出,而不出现“ 查看 1,230 回复 4
楼 主 能不能在批处理执行过程中按Ctrl + C直接退出,而不出现“ 发表于 2004-12-24 00:00 ·  中国 安徽 宿州 电信
银牌会员
★★★
积分 1,339
发帖 595
注册 2004-05-26 00:00
22年会员
UID 25306
性别 男
来自 安徽 宿州
状态 离线
能不能在批处理执行过程中按Ctrl + C(或Ctrl + Break)直接退出,而不出现“ Terminate batch job (Y/N)?”的字样?能不能用if errorlevel n goto ...。如果能这样,那就太方便了。
2 发表于 2004-12-25 00:00 ·  中国 山东 济宁 兖州区 联通
钻石会员
★★★★★
积分 10,046
发帖 3,039
注册 2002-11-11 00:00
23年会员
UID 223
性别 男
状态 离线
choice
简单就是美
3 发表于 2004-12-25 00:00 ·  中国 安徽 宿州 电信
银牌会员
★★★
积分 1,339
发帖 595
注册 2004-05-26 00:00
22年会员
UID 25306
性别 男
来自 安徽 宿州
状态 离线
具体怎么用啊?
4 发表于 2004-12-27 00:00 ·  中国 山西 太原 中移铁通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
23年会员
UID 19
性别 男
状态 离线
Ctrl+C的泛化讨论Re chujiafu:
若要硬要直解这一问题,需要使用非常复杂的机理,比如修改DOS的中断处理或者利用COMMAND外壳应答和抽取错误提示,对于你的这一个问题,可能引起更多的问题,自然是得不偿失。
二楼michael 的choice是一个中断批处理的有限的替代方案,可以在需要确定用户是否终止程序执行的代码处,插入choice语句,以询问用户的方式来决定是否终止程序,当然也可以不用询问而直接终止,这只需要插入一句跳转到程序最后的goto语句即可。
但是choice只能在特定时刻询问用户,而不会在程序执行的任意时刻等待用户的终止选择。这两天我一直在寻找一种可以完全替代Ctrl+C终止批处理的方案,可是最终没有得到满意的答案。于是,我只好回头审视我为什么会得到这样的结果。我找不到Ctrl+C的完全替代者,可是我为什么要寻找Ctrl+C的完全替代者呢?因为使用Ctrl+C终止批处理很难禁止Terminate的终止提示。可是我又为什么要禁止Ctrl+C的终止提示呢?因为有用户提出了这样的要求。
于是,很自然的,问题的解决回到了提问者自己手中。chujiafu兄,你为什么想要禁止Ctrl+C的终止提示呢?先不要急于回答,你可以认真回想一下提出这个问题之前的初衷,然后再考虑是不是要满足前一个问题,就一定要先解决这个问题。
这是一个例子,当我们遇到一个难以解决的问题时,先考虑是不是一定要解决这个问题,是不是可以绕过这个障碍,通过另外的途径达到同样的目的地。
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
5 发表于 2004-12-28 00:00 ·  中国 安徽 宿州 电信
银牌会员
★★★
积分 1,339
发帖 595
注册 2004-05-26 00:00
22年会员
UID 25306
性别 男
来自 安徽 宿州
状态 离线
To willsort 兄: 我提出这个问题的情境是:在一个批处理的开头显示:“Press any key to continue,or Ctrl+C to Cancel.“给用户一个选择的机会。如果用户按任一键,则批处理继续执行下去;如果用户按了Ctrl+C则中止批处理的执行,退出批处理程序。这是我提出这个问题的初衷。
论坛跳转: