![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-11 04:30 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 请问大家如何用批处理何做一个倒计时 |
| 可打印版本 1,117 / 9 |
| 第1楼 wanxibing | 发表于 2009-01-08 01:47 |
| 新手上路 发帖 7 积分 11 | |
|
请问大家如何用批处理何做一个倒计时 请问大家如何用批处理何做一个倒计时
要求就像windows启动菜单一样等待用户的选择,如果不作任何选择就按默认操作,而且还有倒计时的时间在跳动。我在网上看到人家用FOR+SET+ECHO做的能显示倒计时,但不能接受用户的输入。用pecmd.exe wait可等待,但不能显示时间,可惜! [ Last edited by wanxibing on 2009-1-8 at 01:49 ] |
|
| 第2楼 terse | 发表于 2009-01-08 12:17 |
| 银牌会员 发帖 946 积分 2,404 | |
|
wait没时间等待吗 应该有的
|
|
| 第3楼 zdq98 | 发表于 2009-01-08 13:28 |
| 新手上路 发帖 4 积分 4 | |
|
正好今天做了一个,都是参考的这个论坛的资料,谢谢!
关于延时,XP可用ping,这里用的方法PE系统也好使。 另外请教高手,如何在倒计时完成前按任意键退出? ============================================ @echo off :ExitTimeOut echo 倒计时显示:&& echo. if not Exist sleep.exe call :BuildSleep if "%1"=="" (set WaitSS=20) else (set WaitSS=%1) set /p WaitA= 还有 %WaitSS% 秒后退出...<nul :Start if %WaitSS% GTR 9 (set /p WaitAA= %WaitSS% 秒后退出...<nul) else (set /p WaitAA= %WaitSS% 秒后退出...<nul) sleep.exe 1000 set /a WaitSS-=1 if %WaitSS%==0 goto EndS goto Start ) :EndExitTimeOut exit :BuildSleep rem ASCII汇编代码,延迟精度为0.001秒 echo q | debug>nul echo Bj@jzh`0X-`/PPPPPPa(DE(DM(DO(Dh(Ls(Lu(LX(LeZRR]EEEUYRX2Dx=>sleep.com echo 0DxFP,0Xx.t0P,=XtGsB4o@$?PIyU WwX0GwUY Wv;ovBX2Gv0ExGIuht6>>sleep.com echo T}{z~~@GwkBG@OEKcUt`~}@MqqBsy?seHB~_Phxr?@zAB`LrPEyoDt@Cj?>>sleep.com echo pky_jN@QEKpEt@ij?jySjN@REKpEt@jj?jyGjN@SEKkjtlGuNw?p@pjirz>>sleep.com echo LFvAURQ?OYLTQ@@?~QCoOL~RDU@?aU?@{QOq?@}IKuNWpe~FpeQFwH?Vkk>>sleep.com echo _GSqoCvH{OjeOSeIQRmA@KnEFB?p??mcjNne~B?M??QhetLBgBPHexh@e=>>sleep.com echo EsOgwTLbLK?sFU`?LDOD@@K@xO?SUudA?_FKJ@N?KD@?UA??O}HCQOQ??R>>sleep.com echo _OQOL?CLA?CEU?_FU?UAQ?UBD?LOC?ORO?UOL?UOD?OOI?UgL?LOR@YUO?>>sleep.com echo dsmSQswDOR Last edited by zdq98 on 2009-1-8 at 13:54 ] |
|
| 第4楼 moniuming | 发表于 2009-01-08 14:43 |
| 银牌会员 发帖 574 积分 1,335 来自 广西 | |
|
这样?
|
|
| 第5楼 zdq98 | 发表于 2009-01-08 18:02 |
| 新手上路 发帖 4 积分 4 | |
|
谢谢 moniuming ,
倒计时想在屏幕里面显示,我不懂您的代码,但是我改了一下显示部分,终于可以了 如果有时间的时候请解释一下您的代码? if not "%1"=="" goto %1 这句是什么意思? 如果这段代码在一个大的批处理里面,有参数,这个 %1 和那个大的批处理的参数会冲突吗? 不好意思,太菜了。。。 [ Last edited by zdq98 on 2009-1-8 at 18:38 ] |
|
| 第6楼 moniuming | 发表于 2009-01-08 19:09 |
| 银牌会员 发帖 574 积分 1,335 来自 广西 | |
如果这段代码在一个大的批处理里面,有参数,这个 %1 和那个大的批处理的参数会冲突吗? 可以自己定义啊,比如: |
|
| 第7楼 BC | 发表于 2009-01-08 19:17 |
| 中级用户 发帖 175 积分 338 | |
|
要不我们搞个函数版吧!
|
|
| 第8楼 newxso | 发表于 2009-01-08 21:09 |
| 初级用户 发帖 101 积分 73 来自 GZ | |
|
其实在Win2003中有一个timeout.exe的延时程序,可以实现倒计时并显示秒数,使用方法是: timeout /t 10 即可进行10秒倒计时,把此程序放置到System32目录下,日后在批处理中就可调用。了解其参数,可在CMD窗口下输入 timeout /?
[ Last edited by newxso on 2009-1-25 at 16:34 ] 附件 timeout.rar (13.68 KiB) |
|
| 第9楼 netbenton | 发表于 2009-01-08 23:02 |
| 银牌会员 发帖 752 积分 1,916 来自 广西 | |
|
纯批处理也可以精度延时(0.01)秒, wait函数代替sleep.exe @echo off
:ExitTimeOut set WaitSS=15 if "%1"==":StartExitTimeOut" goto %1 del "%temp%\#" 2>nul start /b %~fs0 :StartExitTimeOut echo.&set/p= 等待 %WaitSS% 秒自动退出...任意键立即退出。 <nul&pause>nul >"%temp%\#" type nul exit :StartExitTimeOut echo. && echo. set /p WaitA= 倒计时 %WaitSS% 秒...<nul for /l %%a in (%WaitSS% -1 1) do ( if %%a GTR 9 (set /p WaitAA= %%a 秒...<nul) else (set /p WaitAA= %%a 秒...<nul) if exist "%temp%\#" ( del "%temp%\#" exit ) call :wait 100 ) title 倒计时结束,程序退出... for /f "tokens=2" %%a in ('tasklist /fi "windowtitle eq 倒计时结束,程序退出..." /nh') do ( taskkill /f /pid %%a ) exit :wait 延时 %1 毫秒 @echo off&setlocal enabledelayedexpansion call :subtime set /a bb=aa+%1 :cmptime call :subtime if %aa% lss %bb% goto :cmptime endlocal goto :eof :subtime set tf=%time% set "aa=(100%tf:~0,2%%%100)*360000+(100%tf:~3,2%%%100)*6000+(100%tf:~6,2%%%100)*100+(100%tf:~9,2%%%100)" set /a aa=%aa% goto :eof |
|
| 第10楼 zdq98 | 发表于 2009-01-09 12:25 |
| 新手上路 发帖 4 积分 4 | |
|
大家回复的真快呀,不止一种方法完美解决,谢谢!
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |