我想知道是否有办法制作使用计时器脚本(例如TIMEOUT命令)的批处理文件,并且在计时器运行时,让批处理文件执行其他处理。但是当计时器用完时,退出。 (或者执行另一个小过程)我知道这意味着te批处理文件必须同时运行多个进程,我只想知道它是否可能以某种方式。
有什么想法吗?
答案 0 :(得分:0)
您可以使用开始/ b cmd / c myTimeout.bat
这会在同一窗口中启动一个新应用程序(start /?)
使用此机制,您应该可以同时执行多个作业
修改强> 对于一个简单的超时,这似乎有点过大。 对于6秒的超时,您可以使用类似
的内容set startTime=%time%
call :timeToMs startMs startTime
set /a timeoutAt=startMs + 6000
:loop
... wait for something, like a file is created, or a CD is inserted
if job_is_ready goto :leaveTheLoop
REM Test if the timeout is reached
set currentTime=%time%
call :timeToMs nowMs currentTime
if nowMs GTR timeoutAt goto :leaveTheLoop
goto :loop
:leaveTheLoop
它更适合真正的并行作业,例如显示作业和游戏的键输入作业。
答案 1 :(得分:0)
修改了jeb的代码,使其起作用:
@echo off
set /A startMs=10*%time:~9,2%+1000*%time:~6,2%+60000*%time:~3,2%+3600000*%time:~0,2%
REM the 6000 in the next line is how many milliseconds of a delay you want
set /a timeoutAt=%startMs%+6000
:loop
REM 'passive' code here:
REM Test if the timeout is reached
2>NUL set /A nowMs=10*%time:~9,2%+1000*%time:~6,2%+60000*%time:~3,2%+3600000*%time:~0,2%
if /I %nowMs% GTR %timeoutAt% goto leaveTheLoop
goto loop
:leaveTheLoop
REM do the things you want to do when the timer ends