如果我想在某个月的第五天安排一项任务,但不在周末,我该怎么办?例如:如果第五天是星期六,那么任务将安排在星期一。
谢谢您的回答。
答案1
以下是我过去用于类似任务的解决方案,我对其进行了一些修改,以便能够满足您的需求。诀窍是让任务计划程序执行批处理脚本,并让执行的批处理脚本具有逻辑来执行是否运行的条件检查。
您可以使用CALL
或者START
执行可执行文件(应用程序)、另一个批处理脚本,执行 PowerShell 脚本以及其他类型的脚本。有时任务计划程序在这种情况下,调度不够强大,无法满足特殊的调度需求。
本质上这个解决方案将...
批处理脚本
笔记: 您真正需要调整的唯一事情是使用SET RunFile=C:\SomeFolder\SomePath\
部分中的正确路径,使其成为创建运行文件的正确文件夹或 UNC 路径等。然后只需<Rest of logic needed >
执行或运行所需的任何逻辑或脚本即可。任务计划程序正在运行。
@ECHO ON
::: -- Set date variables for conditional logic for the current date and day of week
FOR /F "TOKENS=1 DELIMS=." %%A IN ('WMIC OS GET LocalDateTime ^| FIND "."') DO SET rundt=%%~A
SET rundt=%rundt:~0,6%
FOR /F "TOKENS=1 DELIMS=." %%A IN ('WMIC PATH Win32_LocalTime GET DayOfWeek ^| FINDSTR /R [0-9]') DO SET DOW=%%~A
::: -- If the day today is 6 for Saturday or 7 for Sunday then EXIT
IF %DOW%==6 EXIT
IF %DOW%==7 EXIT
::: -- Set the run file location to create a file with "run" in it if the day is correct
SET RunFile=C:\SomeFolder\SomePath\%rundt%.run
::: -- If "Run" already found in "~\<YYYYMM>.run" file then do not run because it already has this month
FINDSTR /I Run "%RunFile%"
IF ERRORLEVEL 1 (GOTO :Run) ELSE (EXIT)
:Run
ECHO Run>"%RunFile%"
<Rest of logic needed >
<CALL C:\folder\app.exe >
EXIT