Пакетный файл во время цикла - PullRequest
0 голосов
/ 01 ноября 2018

Я пытаюсь сделать цикл while в файле .bat, но он не работает должным образом. Я хочу сохранить текущее время в переменных local_hours и local_minutes, а затем проверить, был ли выполнен первый перезапуск. Если первый перезапуск не был сделан, то проверьте, соответствует ли текущее время времени перезапуска. Если restart_1_done возвращает значение false или текущее время не соответствует времени перезапуска, тогда я хочу снова установить время (чтобы обновить его до текущего времени) и делать все снова, пока значение restart_1_done не будет установлено в значение true. .

Код, который я использую для достижения этой цели, следующий

@echo off

set restart_1_hour=06
set restart_1_minutes=00

set restart_2_hour=12
set restart_2_minutes=00

set restart_3_hour=18
set restart_3_minutes=00

set restart_4_hour=00
set restart_4_minutes=00


set restart_1_done=false
set restart_2_done=false
set restart_3_done=false
set restart_4_done=false

:getTime
for /f "tokens=1-4 delims=/ " %%a in ('date /t') do (set local_day=%%a)
for /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set local_month=%%a)
for /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set local_year=%%b)
for /f "tokens=1-2 delims=/:" %%a in ("%TIME%") do (set local_hours=%%a)
for /f "tokens=1-2 delims=/:" %%a in ("%TIME%") do (set local_minutes=%%b)
set local_time=%local_hours%h%local_minutes%m
set local_date=%local_day%/%local_month%




:fstRestart
if "%restart_1_done%"=="false" (
    if "%local_hours%"=="%restart_1_hour%" (
        if "%local_minutes%"=="%restart_1_minutes%" (
            echo [%local_date% - %local_time%] Rebooting the main server...
            set restart_1_done=true 
        )
    )
) else (
    goto :getTime
)

goto :fstRestart

Если я запускаю этот код в то время, когда restart_1_hours и restart_1_minutes совпадают, он работает. Но если я установлю, например, 15:32 и открою файл в 15:31, он не будет работать, когда время изменится на 15:32. Я даже пытался скопировать весь код :getTime в оператор else, но это не сработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...