Que puis-je faire si je veux planifier une tâche, par exemple, le cinquième jour du mois, mais pas pendant le week-end. Exemple: si le cinquième jour est samedi, la tâche sera programmée le lundi.
Merci pour les réponses.
Que puis-je faire si je veux planifier une tâche, par exemple, le cinquième jour du mois, mais pas pendant le week-end. Exemple: si le cinquième jour est samedi, la tâche sera programmée le lundi.
Merci pour les réponses.
Réponses:
Vous trouverez ci-dessous une solution que j'ai déjà utilisée dans le passé pour une tâche similaire que j'ai légèrement modifiée pour éventuellement vous aider. L'astuce consiste à faire en sorte que le planificateur de tâches exécute un script de traitement par lots et que le script de traitement par lots exécuté contienne la logique lui permettant d'exécuter ou non les contrôles conditionnels.
Vous pouvez utiliser CALL
ou START
exécuter des fichiers exécutables (une application), un autre script de traitement par lots, exécuter des scripts PowerShell et d'autres types de scripts. Parfois, la planification du planificateur de tâches n'est pas assez robuste pour des besoins de planification spéciaux, comme dans ce cas.
Essentiellement, cette solution sera. . .
Déclencher pour exécuter chaque mois sur le
5th
,6th
et7th
si samedi est le5th
, dimanche est6th
, alors lundi sera le7th
mais même si dimanche est le5th
ou6th
il va encore courir le lundi le6th
ou7th
Incorporer un script de traitement par lots qui exécute une logique conditionnelle initiale qui vérifie le jour de la semaine et prend des mesures en fonction de ces conditions pour créer ou non un fichier contenant le mot
Run
, mais s'il a déjà été crééRun
pour cela mois alorsEXIT
Remarque: La seule chose que vous avez vraiment besoin d'ajuster avec ceci est d'utiliser le bon chemin dans la SET RunFile=C:\SomeFolder\SomePath\
partie pour en faire le bon dossier ou le bon chemin UNC pour créer le fichier d'exécution, etc. Ensuite, faites <Rest of logic needed >
simplement exécuter ou exécuter n'importe quelle logique ou script le planificateur de tâches est en cours d'exécution.
@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