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