中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-09-23 15:28
47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,273 会员排行
DOS批处理 & 脚本技术(批处理室) » [已结]如何用Choice实现10秒内未输入指定字符即调用Autoexec
可打印版本  2,010 / 13
第1楼 martin325 发表于 2006-02-27 11:43
银牌会员 发帖 603 积分 1,582
[已结]如何用Choice实现10秒内未输入指定字符即调用Autoexec
如题。

请各位高手帮忙!

[ Last edited by willsort on 2006-4-10 at 12:35 ]
第2楼 martin325 发表于 2006-02-27 11:48
银牌会员 发帖 603 积分 1,582
比如:
在autoexec.bat中当执行到
choice /c:a/n
时,一定得输入字符a,才会继续往下执行,否则10秒后就自动再次运行autoexec.bat本身。
第3楼 martin325 发表于 2006-02-27 12:00
银牌会员 发帖 603 积分 1,582
或者系统自动重启
第4楼 martin325 发表于 2006-02-27 17:35
银牌会员 发帖 603 积分 1,582
自己顶一下了
第5楼 lks205 发表于 2006-02-27 21:13
初级用户 发帖 32 积分 86
Originally posted by martin325 at 2006-2-27 11:48:
比如:
在autoexec.bat中当执行到
choice /c:a/n
时,一定得输入字符a,才会继续往下执行,否则10秒后就自动再次运行autoexec.bat本身。


你是想要达到上面这个目的吗?如果是这样,只需要多设立一个选项,用开关/t设置为默认及等待时间,不就行了吗

[ Last edited by lks205 on 2006-2-27 at 21:30 ]
第6楼 martin325 发表于 2006-02-28 04:22
银牌会员 发帖 603 积分 1,582
想到了,也这样做了,很好。

而且又调用了一个含choice命令的批处理!
第7楼 martin325 发表于 2006-02-28 09:30
银牌会员 发帖 603 积分 1,582
Originally posted by martin325 at 2006-2-27 11:48:
比如:
在autoexec.bat中当执行到
choice /c:a/n
时,一定得输入字符a,才会继续往下执行,否则10秒后就自动再次运行autoexec.bat本身。

有一个问题,就是”非a“字符如何在Choice中表达?
第8楼 lks205 发表于 2006-02-28 13:40
初级用户 发帖 32 积分 86
在开关/C:后面原意设几个就输入几个吧,比如 /c:12345也行
第9楼 martin325 发表于 2006-02-28 15:28
银牌会员 发帖 603 积分 1,582
这样也行,屏蔽了这些号码,但是没有屏蔽掉所有的”非a“字符。
第10楼 willsort 发表于 2006-02-28 16:12
元老会员 发帖 1,512 积分 4,432
Re martin325:


源于 choice.com 本身的特性,在实现指定时间内等待某个缺省按键的功能时,会出现一个小问题。

比如在代码中,如果直接按下 a 则以1为错误码结束choice,并继续运行;如果不按任何键等待10秒则以2为错误码结束choice,然后在if中再次进入autoexec.bat,看来似乎可以满足你的需要。

但不幸的是,如果在等待过程中按下了非a和n的键,则choice会终止原有的倒计时,将始终等待用户按下a或n键。也就是说,如果用户按下了未设定的无效按键字符,则缺省等待的倒计时将自动终止。这与 MSDOS 启动配置菜单中的倒计时特性如出一辙。

对这个特性,没有什么太好的解决办法,我的办法是修改 choice.com 。脚本是我以前所写的一个choice扩展脚本,它只能修改Win98下的choice.com,使用 debug choice.com < choicex.asd > nul 可以将它所在目录下的choice.com 修改并保存为新的 ChoiceX.com,这个choicex.com的功能扩展在中已经提到。

因为修改需要具备一些简单的dos和debug的知识,如果你不太熟悉,可以将脚本choicex.asd、批处理ModChc.bat以及Win98下的choice.com同时保存到一个目录下,然后运行ModChc.bat即可生成ChoiceX.com。

如果你只需要不终止倒计时的扩展,而不需要对Esc/回车/空格的额外扩展,那么你可以删去中047D和0A80两段。

choice test


ChoiceX.asd - Choice 扩展 DEBUG 汇编脚本


ModChc.bat - 扩展 choice.com 的缺省按键功能


[ Last edited by willsort on 2006-2-28 at 16:27 ]
第11楼 martin325 发表于 2006-02-28 17:11
银牌会员 发帖 603 积分 1,582
看来什么问题也难不到斑竹的:)

佩服中……
第12楼 martin325 发表于 2006-02-28 21:04
银牌会员 发帖 603 积分 1,582
向热心的willsort版主致敬!

本人刚刚测试,一切OK!

谢谢
第13楼 secowu 发表于 2006-03-07 17:15
初级用户 发帖 92 积分 201
能否直接提供修改好的CHOICEX下载呀
第14楼 martin325 发表于 2006-04-08 21:02
银牌会员 发帖 603 积分 1,582
提供修改好的CHOICE.COM下载
按willsort斑竹的修改方案修改的CHOICE.COM,现提供直接下载。

附件
CHOICE.rar (2.85 KiB)
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023