我编写了一个简单的批处理文件脚本,用于每天,每周和每月备份测试数据。
如果直接运行批处理文件,脚本运行良好,但是从Windows任务计划程序(Windows 10)启动时遇到问题。
我有一个批处理文件写入的日志文件,所以我知道脚本会执行。但问题似乎是在使用if语句和调用子例程时。
主要代码如下:
:: call daily backup every day
call :dailybackup
:: call weekly backup if today is sunday
if %day%==Sun ( call :weeklybackup )
:: call monthly backup if today is the 28th
if %dd%==28 ( call :monthlybackup )
call :log "FINISHED"
:: main program complete - exit batch file
exit /b
每个子例程将日志消息写入日志文件。我已经验证了:dailybackup和:每月备份例程在我手动运行批处理文件时被正确调用,但是从Task Scheduler运行时则不行。 :dailybackup例程始终执行。
只需澄清一点,我知道当我收到"完成"批处理文件时,批处理文件会完全退出。记录消息。
任何想法都很受欢迎
ps我刚刚被问到如何计算%day%和%dd%.....
:: Get the current day of the month
for /f "tokens=1-3 delims=/ " %%a in ("%date%") do (
set dd=%%a
set mm=%%b
set yy=%%c
)
:: determine the day of the week
for /f "skip=1" %%a in ('WMIC Path Win32_LocalTime Get DayOfWeek' ) do (
if %%a==1 set day=Mon
if %%a==2 set day=Tue
if %%a==3 set day=Wed
if %%a==4 set day=Thu
if %%a==5 set day=Fri
if %%a==6 set day=Sat
if %%a==7 set day=Sun
)