Что я могу сделать, если я хочу запланировать задание, например, на пятый день в месяце, но не в выходные дни. Пример: если пятый день суббота, значит, задание будет запланировано на понедельник.
Спасибо за ответы.
Что я могу сделать, если я хочу запланировать задание, например, на пятый день в месяце, но не в выходные дни. Пример: если пятый день суббота, значит, задание будет запланировано на понедельник.
Спасибо за ответы.
Ниже приведено решение, которое я использовал в прошлом для аналогичной задачи, которую я немного изменил, чтобы потенциально помочь вам. Хитрость заключается в том, чтобы планировщик задач выполнял пакетный сценарий, а выполняемый пакетный сценарий содержал логику для выполнения условных проверок для запуска или нет.
Вы можете использовать CALL
или START
для запуска исполняемых файлов (приложения), другого пакетного сценария, выполнения сценариев PowerShell и других типов сценариев. Иногда планирование планировщика заданий недостаточно надежно для особых задач планирования, как в этом случае.
По сути это решение будет. , ,
Запускайте его для запуска каждый месяц 5-
5th
,6th
и7th
так что если суббота5th
, воскресенье6th
, то понедельник будет7th
но даже если5th
или6th
воскресенье, он все равно будет работать в понедельник6th
или7th
Включите пакетный скрипт, который будет запускать некоторую начальную условную логику, которая проверит день недели и применит действие на основе этих условий, создавать ли файл со словом «
Run
, но если он уже был создан с помощью «Run
за этот месяц, затемEXIT
Примечание: единственное, что вам действительно нужно отрегулировать, это использовать правильный путь в части 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