Я получил %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)
EDIT:
Я также проверил особый случай здесь благодаря Stephan. В этом случае, если startTime имеет значение 59 или что-то близкое к 60, очень вероятно, что currentTime будет иметь значение меньше, чем startTime. Я проверил это с простым, если заявлением:
if %currentTime% lss %startingTime% (
set /a currentTime=%currentTime%+=60
)
Таким образом, нет никакой возможности, что CURRENTTIME будет меньше, чем startingTime. Если вы не хотите, чтобы ваш цикл работал более 59 секунд.
попробуйте это со временем 'xx: xx: 59' ... это будет две очень длинные секунды. – Stephan
Привет, где я могу поместить время в скрипт? Спасибо, что любил ваш ответ! – Cool841
@ Cool841 Время в секундах находится в переменной '% loopDuration%'. Обратите внимание, что это будет работать только со временем менее 60 секунд (что, по-видимому, идеально соответствует вашим требованиям) – Stephan