楼 主
请教:批处理中任意键退出该怎么写呢?
发表于 2003-12-26 00:00 · 中国 重庆 电信
银牌会员
★★★
积分 2,202 发帖 499 注册 2003-06-12 00:00 UID 4876 性别 男
状态 离线
在setup 98 和安装一些程序时有任意键退出(或是ESC键);可直接退出或出现提示,在批处理中如何实现这个功能呢? 谢谢...!
一年四季,枫叶红了又红;人生四季,失去的,还能再来吗?—— !
第 2 楼
发表于 2003-12-27 00:00 · 中国 北京
初级用户
★
积分 105 发帖 1 注册 2003-12-27 00:00 UID 14525 性别 男
状态 离线
第 3 楼
发表于 2003-12-27 00:00 · 中国 黑龙江 哈尔滨 教育网
初级用户
★
积分 119 发帖 4 注册 2003-12-27 00:00 UID 14539 性别 男
状态 离线
第 4 楼
发表于 2003-12-28 00:00 · 中国 重庆 电信
银牌会员
★★★
积分 2,202 发帖 499 注册 2003-06-12 00:00 UID 4876 性别 男
状态 离线
对不起,我没说清楚;就好象win98或XP的安装,在进行的过程中,可以ESC退出;在DOS下一些dos程序的安装中,经常出现按任意键继续,而按ESC则退出的提示,这里的任意键继续,ESC退出功能,在批处理怎样办到呢?多谢帮助...
一年四季,枫叶红了又红;人生四季,失去的,还能再来吗?—— !
第 5 楼
发表于 2003-12-30 00:00 · 中国 山东 烟台 联通
元老会员
★★★★
Batchinger
积分 4,432 发帖 1,512 注册 2002-10-18 00:00 UID 19 性别 男
状态 离线
Re xiaojun:
pause的作用就是按任意键继续,按Ctrl+C或者Ctrl+Break退出;在批处理中运行,恰好也有你所需要的退出提示。你只需要改一下pause的提示信息,就可以简单实现此功能了。
echo Press any key to continue and ctrl+c key to exit
pause>nul
或许你心有不甘,为什么不能有更有人性化的退出键设置以及更有人性化的退出提示?再给你一个建议吧:
choice /c:qc /n /t:c,5 Press 'q' key to exit and 'c' key to continue.
if errorlevel 2 goto continue
if errorlevel 1 goto exit
:exit
echo.
choice Are you exit really?
if errorlevel 2 goto continue
goto end
当然,还是有很多限制,只能用字母加数字键控制,而无法使用Esc或者空格、回车等键,这就是批处理本身的局限性了,你要用它,就得接受这局限性,或者绕过,或者突破:)
※ Batchinger 致 Bat Fans:请访问
批处理编程的异类 ,欢迎交流与共享批处理编程心得!
第 6 楼
发表于 2003-12-30 00:00 · 中国 重庆 电信
银牌会员
★★★
积分 2,202 发帖 499 注册 2003-06-12 00:00 UID 4876 性别 男
状态 离线
谢谢楼上的帮助,还是我没说清楚,上面实现的是几秒延迟,并给出2个选择再继续下面的,不过我好象明白了1点,批处理是否不能做到 “一些dos程序的安装中,按任意键继续,ESC则退出” -但 IF 什么都不按,安装便在运行中, 如XP在安装中,左下角的esc退出,当按下ESC后,会出现询问对话框,这大概不是批处理能做到的吧,涉及到中断与编程了吧? 我这个问题与理解对吗? 谢谢您。。。!
一年四季,枫叶红了又红;人生四季,失去的,还能再来吗?—— !
第 7 楼
发表于 2003-12-31 00:00 · 中国 山东 烟台 联通
元老会员
★★★★
Batchinger
积分 4,432 发帖 1,512 注册 2002-10-18 00:00 UID 19 性别 男
状态 离线
Re xiaojun:
看了你的回复,感觉几点需要澄清:
1,在 dos 下批处理做不到的事情相当少,几乎没有!至少我至今没有遇见肯定不能用批处理来实现的 dos 案例。为什么这么说?因为批处理最强大的优势,就是可以调用一切可以调用的资源,包括各种内外部命令,各种可以找到的程序、工具、软件,甚至在批处理中,可以直接解释执行各种语言的源代码,asm、bas、c诸入此类。将所有这些资源有机的组合起来,所能实现的功能与界面不是任何人可以想象的。所以说,批处理充分体现了“只有想不到,没有做不到”的悍言。
2,在 dos 下工作时,真正用到批处理的场合不到十分之一,很多原本可以用批处理轻松实现的案例都被使用者所放弃。这又是为什么?因为代价问题,也就是说付出的努力和获得的成果无法取得平衡。这里的代价有很多:兼容性、通用性、健壮性、易用性、适用性,还有两点相当就是批处理程序执行所需要的空间和时间。当然成果也有很多:可以正常执行的程序,可以完美执行的程序,可以到处执行的程序,自己编程的成就感,一个复杂问题被简单解决的满足感等等。不过相信很少有人编写超过10行的批处理程序,我自己也很少编上百行的程序,主要是因为“复杂”。复杂会严重损伤程序的轻便快捷,也同时会损害我所提到的各种代价,而至于这些代价的损失能否换得更高的回报,这就是现实编程中的我们所需要考虑的问题了。所以说,在很多情况下,“非不能也,是不为也”。
3,就你在楼顶提到的问题而言,确实不是一个太复杂的案例,但是如果一定要通过批处理来实现,那就的确需要动一番脑筋。但是,你希望你编出来的程序,为了“暂停两秒钟”而需要载入一个要两分钟来初始化的程序吗?这就是问题的症结所在。
但是我们为什么还要用批处理呢?首先当然是因为它的简便性——大多数人都可以不假思索,就编出一个可以实际应用的程序——这的确是很大的诱惑。另外有一点,可能也有不少人能体会到,那就是它的技巧性——当遇到一个问题本以为“无法实现”,却被人告知可以通过三两行的代码就可以轻松“KO”——这种愉悦感相信很多人都乐意体会。虽然别的语言也存在这种技巧性,但他们都没有批处理所来得强烈。仅10来个可以使用的专用关键字,却几乎可以调动所有的资源,这种反差在大多数语言中都不多见。所以,至今,我,还有很多人,仍然热爱着批处理,虽然它正在渐渐老去。
最后,跟你说一声抱歉吧,最终没有完全解决你的问题。不是想不出来,而是不愿去多想:)看来人的惰性是天生的呀!真诚希望你能找到解决问题的最佳方式,也许就在批处理上。
※ Batchinger 致 Bat Fans:请访问
批处理编程的异类 ,欢迎交流与共享批处理编程心得!
第 8 楼
发表于 2003-12-31 00:00 · 中国 重庆 电信
银牌会员
★★★
积分 2,202 发帖 499 注册 2003-06-12 00:00 UID 4876 性别 男
状态 离线
呵呵。。。多谢楼上指点:)
一年四季,枫叶红了又红;人生四季,失去的,还能再来吗?—— !
第 9 楼
发表于 2004-01-02 00:00 · 中国 北京 科技网
银牌会员
★★★
颓废青年
积分 2,265 发帖 721 注册 2003-05-12 00:00 UID 2032 性别 男
状态 离线
第 10 楼
发表于 2004-01-02 00:00 · 中国 辽宁 抚顺 联通
银牌会员
★★★
论坛候鸟
积分 1,131 发帖 332 注册 2003-11-27 00:00 UID 13461 性别 男
状态 离线
第 11 楼
发表于 2004-01-02 00:00 · 中国 重庆 电信
银牌会员
★★★
积分 2,202 发帖 499 注册 2003-06-12 00:00 UID 4876 性别 男
状态 离线
批处理是把我处理得晕头转向了,搞混淆了,现在才清楚自己的问题:~如果“ESC”的键值是AAA,而“ENTER”的键值是BBB;在批处理中,在提示ESC退出和ENTER继续之后;判断用户按下的是AAA还是BBB,来确定是到批处理的结束,还是继续执行,这关键的判断这一句写不出来,呵呵呵 ~ ^_^ 多谢帮助,快到答案了。。。
一年四季,枫叶红了又红;人生四季,失去的,还能再来吗?—— !
论坛跳转:
— 请选择 —
站务公告 & 版主讨论
意见反馈 & 网友交流
DOS学习入门 & 精彩文章 (教学室)
DOS疑难解答 & 问题讨论 (解答室)
DOS启动盘 & LOGO技术 (启动盘室)
DOS批处理 & 脚本技术(批处理室)
DOS媒体世界 & 网络技术 (多媒体室)
DOS汉化世界 & 中文系统 (中文化室)
DOS开发编程 & 发展交流 (开发室)
DOS软件下载 & 游戏分享 (下载室)
GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区
其它操作系统综合讨论区
WinPE、PowerShell及其它命令行系统专区
贴图灌水、文学娱乐专区
网络日志(Blog)
论坛回收站
├ 链接失效,待修正