星期几安排

星期几安排

如果我想在某个月的第五天安排一项任务,但不在周末,我该怎么办?例如:如果第五天是星期六,那么任务将安排在星期一。

谢谢您的回答。

答案1

以下是我过去用于类似任务的解决方案,我对其进行了一些修改,以便能够满足您的需求。诀窍是让任务计划程序执行批处理脚本,并让执行的批处理脚本具有逻辑来执行是否运行的条件检查。

您可以使用CALL或者START执行可执行文件(应用程序)、另一个批处理脚本,执行 PowerShell 脚本以及其他类型的脚本。有时任务计划程序在这种情况下,调度不够强大,无法满足特殊的调度需求。

本质上这个解决方案将...

  • 触发它运行 每个月5th,,6th所以7th如果周六是个5th星期日6th,那么周一 将是7th,但即使周日是5th6th它仍然会运行周一6th7th

    在此处输入图片描述

  • 合并一个批处理脚本,该脚本将运行一些初始条件逻辑,检查星期几,并根据这些条件采取行动,是否创建包含该单词的文件,但如果已经为该月Run 创建了该文件,则RunEXIT

批处理脚本

笔记: 您真正需要调整的唯一事情是使用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

更多资源

相关内容