Horaire du jour de la semaine

2

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.

Kubo
la source
1
Si vous ne voulez pas planifier la tâche le samedi, parce que le PC est hors ligne, il suffit de vérifier: lancez dès que possible si une planification a été manquée.
LPChip
En fait, cette tâche fonctionnera sur le serveur. Votre solution risque donc de ne pas fonctionner car le serveur est toujours en ligne.
Kubo
Vérifiez si le jour est en fin de semaine et planifiez un événement ponctuel lundi prochain
phuclv

Réponses:

1

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 CALLou STARTexé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, 6thet 7thsi samedi est le 5th, dimanche est 6th, alors lundi sera le 7thmais même si dimanche est le 5thou 6thil va encore courir le lundi le 6thou7th

    entrez la description de l'image ici

  • 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éé Runpour cela mois alorsEXIT

Script de lot

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

Ressources supplémentaires

Pimp Juice IT
la source