![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-02 19:58 |
共 48,038 主题排行 / 350,123 发帖 / 今日 1 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 在批处理中,如何显示倒计时? |
| 可打印版本 6,414 / 33 |
| 第1楼 martin325 | 发表于 2006-04-08 21:29 |
| 银牌会员 发帖 603 积分 1,582 | |
|
在批处理中,如何显示倒计时? 当用Choice设定延时命令时间后,如何在批处理中实现这个时间的倒计时显示?
请教了:) |
|
| 第2楼 martin325 | 发表于 2006-04-08 22:33 |
| 银牌会员 发帖 603 积分 1,582 | |
|
顺计时也可:)
|
|
| 第3楼 martin325 | 发表于 2006-04-09 00:00 |
| 银牌会员 发帖 603 积分 1,582 | |
|
在网上搜索到的一个批处理如下:
以下面的格式运行LOOP.BAT逐一显示从1 到 9(注意参数之间要空格): C:>LOOP 1 2 3 4 5 6 7 8 9 LOOP.BAT的内容: 代码: @ECHO OFF :LOOP IF '%1'=='' GOTO END SET COUNT=%1 CLS ECHO %COUNT% PAUSE SHIFT GOTO LOOP :END 好像不够完整,执行不了! 而且从1 到 9逐一显示,也不妥。那样岂不是要显示10行! |
|
| 第4楼 martin325 | 发表于 2006-04-09 12:43 |
| 银牌会员 发帖 603 积分 1,582 | |
|
最好有像Config.sys启动菜单所显示的倒计时。
不知哪位高手能解? |
|
| 第5楼 chenhui530 | 发表于 2006-04-09 13:14 |
| 高级用户 发帖 273 积分 772 | |
|
w.bat可以
|
|
| 第6楼 martin325 | 发表于 2006-04-09 13:27 |
| 银牌会员 发帖 603 积分 1,582 | |
|
最好是不用第三方工具。
用批处理来调用DOS本身的倒计时功能! |
|
| 第7楼 willsort | 发表于 2006-04-09 19:12 |
| 元老会员 发帖 1,512 积分 4,432 | |
|
Re martin325:
不用第三方工具,目前有两个方案: 1、使用debug现场修改choice,曾经做过这方面的尝试,后来考虑对choice的修改过大而失去了debug的意义,同时过多的插入代码也可能会对程序的健壮性带来影响,最后放弃了; 2、利用3楼提到的choice循环来完成。代码如下: 不过,考虑到这两种方案复杂度都比较高,还是推荐使用第三方工具。 [ Last edited by willsort on 2006-4-10 at 12:28 ] |
|
| 第8楼 martin325 | 发表于 2006-04-09 19:59 |
| 银牌会员 发帖 603 积分 1,582 | |
|
不知显示30秒倒计时,可否把
if "%1"=="" %0 : 9 8 7 6 5 4 3 2 1 改为 if "%1"=="" %0 : 29 28 27 26 ………… |
|
| 第9楼 martin325 | 发表于 2006-04-09 20:26 |
| 银牌会员 发帖 603 积分 1,582 | |
|
刚刚测试了,发现没有达到预期效果,屏幕提示:
Invalid time Enter new time |
|
| 第10楼 martin325 | 发表于 2006-04-10 00:00 |
| 银牌会员 发帖 603 积分 1,582 | |
|
为什么config.sys能用MSDOS自身的计时器,而批处理不能调用呢?
请高手研究一下! |
|
| 第11楼 willsort | 发表于 2006-04-10 12:28 |
| 元老会员 发帖 1,512 积分 4,432 | |
|
Re martin325:
Originally posted by martin325 at 2006-4-9 20:26: 根据提示来看,是错误使用了time命令,而我的代码未使用到time,那么可能的原因是,你将代码命名为time.bat(本名为TimeOut.bat)或者在其他代码中使用time时出错。 为什么config.sys能用MSDOS自身的计时器,而批处理不能调用呢? config.sys的倒计时由io.sys提供支持,而io.sys则是用汇编实现,算法应该是反复读取系统时钟。DOS本身应该并未提供可供调用的倒计时显示中断或函数。因此,批处理仍然需要借用其它命令或程序中的类似功能来替代性实现。 |
|
| 第12楼 voiL | 发表于 2006-04-10 12:53 |
| 中级用户 发帖 189 积分 384 | |
|
我之前也曾在论坛上找过相关的资料,但没有找到现成的,所以就自己东拼西凑的"凑"了个出来...
在XP CMD(ver:5.1.2600)下测试通过...
|
|
| 第13楼 willsort | 发表于 2006-04-10 13:11 |
| 元老会员 发帖 1,512 积分 4,432 | |
|
[求助]如何将键盘的输入字符直接送入某变量作为选择项 Re voiL:
你的倒计时代码没有实现选择后中断倒计时的功能,用户只能选择等待,直到倒计时结束。而如果使用set/p或实现等待选择,则倒计时将无法继续,这应该是cmd脚本的局限性,只有考虑使用32位版本的choice.exe了。 另外,感觉你的vbs脚本只需要生成一次就足够了,在调用前生成,最后一次调用完成后删除,应该可以提高不少效率。否则,倒计时的精确性可能会受到影响。这应该算作模块化编程的弊病了。另外,:End标签感觉将始终无法抵达,因为在goto end总是先goto Timeout。 |
|
| 第14楼 martin325 | 发表于 2006-04-10 20:38 |
| 银牌会员 发帖 603 积分 1,582 | |
|
这个循环批处理中有“CLS”,目的使“echo 当前选择时间: %i%”始终在屏幕同一地方显示,但就是这个清屏命令,把本人认为应该给使用者的一些屏幕提示也一起清除了,呵呵,这个问题该如何解决?
|
|
| 第15楼 martin325 | 发表于 2006-04-10 20:41 |
| 银牌会员 发帖 603 积分 1,582 | |
|
现在需要解决两个问题:
一是保留已经在屏幕上显示的必要信息与提示 二是让倒计时显示始终在屏幕同一处显示 |
|
| 1 2 3 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |