我有这段代码:
:SET
@echo %random%%random%%random%%random%%random%%random%%random%%random%%random%
goto :SET
但是如何制作它只会运行几秒钟?我将如何更改此变量?
答案 0 :(得分:4)
我将%TIME%
作为当前时间并解析它以获得当前时间。我在循环的每次迭代中都做到了。如果没有花费在循环上的所需时间(定义为loopDuration
),则继续下一次迭代。
echo off
:: Set your loop duration
set /a loopDuration=2
:: Get starting second
set "startingTime=%TIME:~6,2%"
set /a startingTime=%startingTime%
:SET
echo %random%%random%%random%%random%%random%%random%%random%%random%%random%
:: Get current second
set "currentTime=%TIME:~6,2%"
set /a currentTime=%currentTime%
if %currentTime% lss %startingTime% (
set /a currentTime=%currentTime% += 60
)
set /a timePassed=%currentTime%-%startingTime%
:: If desired time has not passed, continue the loop
if not %timePassed% equ %loopDuration% (goto :SET)
修改强>
由于斯蒂芬,我还在这里查了一个特例。在这种情况下,如果startingTime的值为59或接近60的值,则currentTime很可能具有小于startingTime的值。我用一个简单的if语句检查了它:
if %currentTime% lss %startingTime% (
set /a currentTime=%currentTime%+=60
)
因此currentTime不可能小于startingTime。除非你希望你的循环运行超过59秒。