循环时批处理文件

时间:2018-11-01 19:10:15

标签: batch-file

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

0 个答案:

没有答案