我想根据一天中的时间更改变量状态。
@echo off
:loop
SETLOCAL enabledelayedexpansion
set flag=1
if time is between 0 AND 12 set flag = 0
if time is between 12 AND 24 set flag = 1
for %%x in (51 57 ) do (
if %flag% == 1 (
Do Stuff
)
if %flag% == 0 (
Do Other Stuff
)
)
timeout /t 0
goto loop
如果 %hour% LSS 12 设置标志=0 如果 %hour% GTR 12 设置标志=0
首先,您需要获取日期,最好采用固定格式,独立于区域设置(不像`%date%),然后提取小时并根据它设置您的标志。有多种方法,这是其中之一:
for /f "tokens=2 delims=: " %%a in ('Robocopy.exe \: . /NJH /L^|findstr /b "2"') do if 1%%a lss 112 (set flag=0) else (set flag=1)
这将时间 00:00 到 11:59 设置为 flag=0,将时间 12:00 到 23:59 设置为 flag=1。
注意:我在小时中添加了
1
(因此09
变成了109
),因为以零开头的数字被视为八进制,而08
和09
是无效的八进制数字,导致语法错误)。
下午不需要第二个
if
,只需一个if - else