Board logo

标题: [求助]批处理里的时间处理?请高手指点! [打印本页]

作者: zgzjwz     时间: 2004-5-18 00:00    标题: [求助]批处理里的时间处理?请高手指点!

例如:在运行a.bat后,隔600秒后再运行 b.bat 应该怎么写?
请高手指教!  先谢了!!!!
作者: willsort     时间: 2004-5-18 00:00
Re zgzjwz:

  可以使用choice命令,不过你似乎使用的是xp系统,其中不支持此命令,可在2003中找到其代替版choice.exe。如果你打算采用此方案,我可以告诉你具体的方案,只是稍微有些复杂,大概需要十行左右的代码,不知你是否可以接受。
作者: zgzjwz     时间: 2004-5-19 00:00
谢谢你  willsort ,我看了这个论坛的全部帖子,知道你是这方面的高手!能得到你的指教,我很荣幸 !!
你可以告诉我详细一点吗?比如:在每一行的命令后面给我加上一句解析!因为我对一些DOS命令还不太熟悉!

...............................先谢了!
作者: willsort     时间: 2004-5-19 00:00
Re zgzjwz:

  因为今天遇上难得的休息机会,所以对此程序做了较为详细的注解,希望对你的理解有所帮助。

  Quote:
:: 因为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 [%counter%]==[%limit%] 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


作者: Kinglion     时间: 2004-5-19 00:00
建议 willsort  常来论坛来看看,解答大家关于批处理方面的问题, willsort 在批处理绝对是高手。
作者: zhri     时间: 2004-5-19 00:00
感动。

太伟大了。
作者: zgzjwz     时间: 2004-5-20 00:00
Re willsort 谢谢!!