我正在尝试在.bat
文件中进行“ while”循环,但无法正常工作。
我想做的是将当前时间保存在变量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
匹配的确切时间运行此代码,那么它将起作用。但是,例如,如果我设置为3:32 PM并在3:31 PM时打开文件,则当时间更改为3:32 PM时它将不起作用。
我什至尝试将整个:getTime
代码复制到else
语句中,但效果不佳。