当用Choice设定延时命令时间后,如何在批处理中实现这个时间的倒计时显示?
请教了:)
请教了:)
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!
:: TimeOut.bat - Test of timeout
:: Will Sort - 18:52 2006-4-9 - MSDOS7.10/COMMAND@Win98
@echo off
if "%1"=="" %0 : 9 8 7 6 5 4 3 2 1
if "%1"=="" goto end
:TimeOutLoop
cls
echo Please choose 1~9: %2
choice /c123456789_ /t:_,1 > nul
if not errorlevel 10 goto Chosen
shift
if not "%2"=="" goto TimeOutLoop
:Chosen
for %%e in (1 2 3 4 5 6 7 8 9) do if errorlevel %%e set _e=%%e
if errorlevel 10 set _e=
echo You choice: %_e%
set _e=
:end
Originally posted by martin325 at 2006-4-9 20:26:
刚刚测试了,发现没有达到预期效果,屏幕提示:
Invalid time
Enter new time
为什么config.sys能用MSDOS自身的计时器,而批处理不能调用呢?
@echo off
set /a i = 10
:Timeout
if %i% == 0 goto Next
setlocal
set /a i = %i% - 1
cls
echo 当前选择时间: %i%
call:Delay 1000此1000为延迟时间,以毫秒计算,,即1秒.作为引用下面延迟脚本的输入参数.
goto Timeout
goto End
:Next
cls & echo.
echo 恭喜!倒计时测试成功!
echo.
pause & exit
:End
echo 很抱歉!倒计时测试没有成功!
exit
::============================================================
:Delay
@echo off & setlocal enableextensions enabledelayedexpansion
echo WScript.Sleep %1 > %temp%.\tmp$$$.vbs
echo %time%>nul
cscript //nologo %temp%.\tmp$$$.vbs
echo %time%>nul
for %%f in (%temp%.\tmp$$$.vbs) do if exist %%f del %%f
endlocal & goto :EOF
@echo off & setlocal enableextensions
echo WScript.Sleep 1000 > %temp%.\tmp$$$.vbs
set /a i = 10
:Timeout
if %i% == 0 goto Next
setlocal
set /a i = %i% - 1
cls
echo 当前选择时间: %i%
cscript //nologo %temp%.\tmp$$$.vbs
goto Timeout
goto End
:Next
cls & echo.
echo 恭喜!倒计时测试成功!
echo.
for %%f in (%temp%.\tmp$$$.vbs*) do del %%f
pause & exit