Re zgzjwz:
因为今天遇上难得的休息机会,所以对此程序做了较为详细的注解,希望对你的理解有所帮助。
:: 因为choice仅支持最大99秒的等待时间,所以我们需要循环调用choice
:: 此处设定choice等待时间为60, 调用10次即可等待 600 秒
@echo off
set counter=
set limit=##########
:: 以上设置循环初始条件,计数器counter为空(也就是0),上限limit为10个#
:: 以上设定将使循环执行10次,在此#仅作为循环计数单位,也可换用其它字符
echo P600S.BAT - First Version - 2004.05.19
echo 因为我手边并没有32位版choice.exe,所以只以16位版的choice.com为基础,
echo 完成暂停600秒的设计需求,二者除了运行的平台基础不同之外,可能还会有
echo 功能上些微的差异,需要你在xp环境和choice.exe支持下进行测试,我会根
echo 据你的测试结果对此程序略加修改。
echo.
echo 按任意键开始暂停
pause>nul
:loop
if == goto end
choice /t:y,60 > nul
set counter=%counter%#
cls
echo %counter%
goto loop
:: 以上设定循环体内容,计数器满足条件时跳出,否则不断循环执行choice
:: set counter=%counter%#每执行一次循环体,使计数器递增一个单位
:: choice 实现指定时间暂停的技巧概述:
:: choice 的功能为提示和接收用户键入字符,并据此设置不同的出口参数
:: 因为 choice 有等待一定时间后自动应答的子功能,所以我们可以据此
:: 实现暂停一定时间的功能
:: 参数 /t:y,60 设置等待时间为60秒,等待时间满足后自动应答字符为y
:: 因为choice缺省应答选择为y,n
:: > nul 禁止choice 提示信息的显示
:: 此法的限制为:等待时间内若用户键入字符,choice将会停止计时
:: 若键入y,choice将会结束执行,若不是y,则choice将始终等待键入y
:end
echo 暂停时间已到,或暂停被用户终止,按任意键结束
pause>nul
cls