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