连续循环命令(不暂停)"X"秒



目前我正在处理一个批处理文件,以连续执行命令 X 秒,并且在 X 经过后,我希望使用goto函数重定向它。

这是我最接近我打算让代码做的事情。

:MainMenu
set yourno=
set /p yourno=Input your number:
set /p looptime=Input time:
goto PerformCalc
:PerformCalc
set /a yourno= %yourno%+1
timeout 1
set /a looptime=%looptime%-1
goto CheckLoop
:CheckLoop
if %looptime% equ 0 goto FinishScreen
goto PerformCalc
:FinishScreen
echo Congratulations Your no. is %yourno%
echo Operations completed in %looptime% seconds
pause

现在上面代码的问题是,如果我将循环时间设置为 10 秒,它将只执行 10 个操作。但这不是我打算做的事情。我意识到我已经在我的代码中输入了timeout 1,并且每经过 1 秒就将其减少 1 次。但是,这是因为我无法找到一种连续循环代码 10 秒的方法,而不使用超时 1,从而暂停它以仅执行 10 个操作。

如果您仍然不明白我的意思,这里是代码应该执行的逻辑流程(例如,用户输入循环时间为 10 秒

For Time=10seconds
Do {set /a yourno= %yourno%+1 continuously}
After Time of 10 seconds has elapsed redirect to :FinishScreen

谢谢你的帮助。

@echo off
setlocal
rem Get end time
set seconds=10
for /F "tokens=1-4 delims=:.," %%a in ("%time: =0%") do set /A "endTime=1%%a%%b%%c%%d+seconds*100"
echo Start: %time%
echo Working %seconds% seconds, please wait...
set yourNo=0
:loop
set /A yourNo+=1
rem Check if end time had been reached
for /F "tokens=1-4 delims=:.," %%a in ("%time: =0%") do if 1%%a%%b%%c%%d lss %endTime% goto loop
echo End:   %time%
echo This program could complete %yourNo% loops in 10 seconds

如果处理时间超过午夜,此方法可能会失败,但如果需要,简单的调整可以解决此问题...

最新更新