如何向Windows批处理循环添加初始化

时间:2016-11-03 23:16:53

标签: windows batch-file

我有一个带有循环的批处理文件,我希望定期运行。在每一天的开始 - 当午夜更改时 - 我想只运行一次额外的批处理命令。这是我到目前为止所提出的:

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秒打印一次“做这个循环间隔”。

我做错了什么?

我实际看到的是下图。

enter image description here

1 个答案:

答案 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, ,一旦不相等,就必须有一天的变化。