我有一个带有循环的批处理文件,我希望定期运行。在每一天的开始 - 当午夜更改时 - 我想只运行一次额外的批处理命令。这是我到目前为止所提出的:
for /f "tokens=1-4 delims=/ " %%i in ("%date%") do (
set dow=%%i
set month=%%j
set day=%%k
set year=%%l
)
set previousDate=%month%_%day%_%year%
:loop
timeout /t 5 /nobreak
for /f "tokens=1-4 delims=/ " %%i in ("%date%") do (
set dow=%%i
set month=%%j
set day=%%k
set year=%%l
)
set currentDate=%month%_%day%_%year%
if not previousDate==currentDate
(
echo ONLY DO THIS ONCE A DAY
previousDate=currentDate
)
echo DO THIS EVERY LOOP INTERVAL
timeout /t 5 /nobreak
goto :loop
老实说,我是批处理文件的新手。我对上述内容的期望是看到控制台窗口打印出来 - 每天只打印一次 - “每天只做一次”,然后每隔5秒打印一次“做这个循环间隔”。
我做错了什么?
我实际看到的是下图。
答案 0 :(得分:1)
这是您似乎正在做的简化版本:
@echo off
:loop
call :sub one
echo DO THIS EVERY LOOP INTERVAL
timeout /t 5 /nobreak
call :sub two
if not %two%==%one% (
echo ONLY DO THIS ONCE A DAY
)
timeout /t 5 /nobreak
goto :loop
:sub
set "%1="
for /f %%i in ("%date%") do if not defined %1 set "%1=%%i"
我所做的就是根据您的日期格式将变量%1%和%2%设置为Mon,Tue,Wed,Thu,Fri,Sat或Sun, ,一旦不相等,就必须有一天的变化。