[Résolu] - [Batch Dos] créer un tache planifiée J+3

créer un tache planifiée J+3 [Résolu] - [Batch Dos] - Shell/Batch - Programmation

Marsh Posté le 30-09-2008 à 10:28:57    

Bonjour à tous,
 
j'aimerai créer un script que me créé une tache planifiée 3 jours apres avoir executer ce script.
 
j'essaye de variabliser la commande date /T mais je n'y arrive pas.
 
voici mon bout de script concernant l'ajout de tache planifiée.
 

Code :
  1. schdtasks /tn modif-password-ad /tr modif-password-ad.cmd /sc ONCE /sd /st 18:15:00 /ru /rp 1234


 
si quelqu'un pouvais m'aider.
 
Merci.
 
Dob.


Message édité par dob2806 le 09-10-2008 à 16:39:53
Reply

Marsh Posté le 30-09-2008 à 10:28:57   

Reply

Marsh Posté le 30-09-2008 à 11:10:47    

schdtasks ?

Reply

Marsh Posté le 30-09-2008 à 11:16:01    

il me semble utiliser cette commande  :D   :D  :D  
 
ce que je souhaite c'est lui dire c'est une seule fois dans 3 jours à compter d'aujourd'hui (quand je lance le script).

Reply

Marsh Posté le 30-09-2008 à 11:28:59    

Tu utilises quel OS ?
Le .cmd de ta ligne de commandes semble indiquer que c'est du Windows, mais sur mon XP Pro, je n'ai pas d'utilitaire schdtasks. Pour planifier des tâches, je passe par la commande "at", mais les arguments n'ont rien à voir (et ce schdtasks a l'air diablement plus pratique que at)

Reply

Marsh Posté le 30-09-2008 à 11:33:24    

windows serveur 2003

Reply

Marsh Posté le 30-09-2008 à 11:43:44    

existe pas sous vista, peut pas tester :spamafote:

Reply

Marsh Posté le 30-09-2008 à 11:54:28    

peut-être pourrais-tu nous décrire le comportement que tu as (éventuel message d'erreur) et nous donner une copie de ce que te sort un "schdtasks /?"

Reply

Marsh Posté le 30-09-2008 à 14:20:29    

le schdtask fonctionne parfaitement c'est juste que je ne peux que lui dire /sc TODAY+3

Reply

Marsh Posté le 30-09-2008 à 14:28:14    

et tu peux copier un schdtasks /? ici ?


Message édité par MagicBuzz le 30-09-2008 à 14:29:44
Reply

Marsh Posté le 30-09-2008 à 14:32:58    

Reply

Marsh Posté le 30-09-2008 à 14:32:58   

Reply

Marsh Posté le 30-09-2008 à 14:50:38    

ok, schtasks, là, je l'ai aussi, donc ta ligne plus haut est fausse (vu qu'acessoirement, il te manque aussi le /CREATE, il me semble)
 
Ce serai possible que tu nous copie exactement ce que tu tentes de faire ?

Reply

Marsh Posté le 30-09-2008 à 15:01:19    

après une tentative foirée de :

Code :
  1. set /a test=%DATE%+3


 
J'ai dû me rendre à l'évidence, le langage Batch ne sais pas manipuler des dates, ou en tout cas pas aussi simplement.
 
Par contre j'ai trouvé ça :
http://www.developpez.net/forums/d [...] tes-batch/
 
En gros, tu reprends son truc pour calculer la bonne date, et ensuite t'as juste à coller la variable calculée en paramètre.


Message édité par MagicBuzz le 30-09-2008 à 15:01:32
Reply

Marsh Posté le 30-09-2008 à 16:22:06    

bon pour faire simple sans se prendre la tete avec la gestion des jours/mois je lancerai le script en cours de moi et avant la fin du moi-3 jours .
 
J'ai donc ca qui fonctionne mais je n'arrive pas a ajouter +3 a ma variable jouri !!
 

Code :
  1. for /f "tokens=1,2,3 delims=/" %%i in ('date/T') do (
  2. set jouri=%%i
  3. set moisi=%%j
  4. set anni=%%k
  5. )
  6. Echo %jouri%/%moisi%/%anni%
  7. pause


Message édité par dob2806 le 30-09-2008 à 16:22:59
Reply

Marsh Posté le 30-09-2008 à 16:27:25    

Code :
  1. for /f "tokens=1,2,3 delims=/" %%i in ('date/T') do (
  2. set jour=%%i
  3. set mois=%%j
  4. set anne=%%k
  5. )
  6. set /A jour3=%jour%+3
  7. Echo %jour3%/%mois%/%anne%
  8. pause


 
voila reste plus qu'a l'inserer dans schtask...
 


Message édité par dob2806 le 30-09-2008 à 16:31:04
Reply

Marsh Posté le 30-09-2008 à 16:28:29    

ben quoi, c'est bien le 33 septembre :D

Reply

Marsh Posté le 30-09-2008 à 16:30:26    

:D  :D  :D
 
PS: aujourd'hui cela ne focntionne forcement pas .... avec un if y a t'il moyen de faire quelque chose de plus simple que ce qu'il y a dans le lien donné aimablement par magibuzz ?


Message édité par dob2806 le 30-09-2008 à 16:32:49
Reply

Marsh Posté le 30-09-2008 à 16:43:09    

malheureusement, oui, y'a toujours plus simple. mais qui marche tout le temps, non.
 
par contre, tu peux rajouter un simple if %jour% > 25
et à ce moment coller direct le 3 du %mois%+1 (si évidement %mois% < 12) sinon faut aussi faire un %annee%+1 ;)
 
bon, c'est très loin d'être parfait par contre, puisque le test > 25 garanti que ça plantera pas au mois de février, mais des fois ça lancera le script 8 jours plus tard au lieu de 3... (on peut pas tout avoir ^^)


Message édité par MagicBuzz le 30-09-2008 à 16:44:11
Reply

Marsh Posté le 30-09-2008 à 16:52:27    

juste à titre de rappel, si c'est un besoin critique, tu te prendras sans doute moins la tête en passant par un autre langage de script.
 
Après, si batch te suffit dans ce cas précis, je n'ai rien à redire.

Reply

Marsh Posté le 30-09-2008 à 17:02:23    

surtout, j'espère que c'est pas le même programme qui doit se replanifier tous les 3 jours, parceque sinon le planificateur de tâche gère ça très bien et sans besoin d'indiquer de date ;)


Message édité par MagicBuzz le 30-09-2008 à 17:02:39
Reply

Marsh Posté le 30-09-2008 à 17:03:27    

c'est un script qui se lance deux à trois fois par ans et c'est une demande et j'essaie tant bien que mal d'y repondre  :D


Message édité par dob2806 le 02-10-2008 à 11:32:29
Reply

Marsh Posté le 30-09-2008 à 17:49:49    

sinon quelqu'un sait pourquoi ce scritp ne fonctionne pas ?
 

Code :
  1. rem le nombre d jours est passé en paramètre du batch = %1=periode
  2. for /f "tokens=1,2,3 delims=/" %%i in ('date/T') do (
  3. set jouri=%%i
  4. set moisi=%%j
  5. set ani=%%k
  6. )
  7. set periode=%1
  8. if %moisi:~0,1% EQU 0 set moisi=%moisi:~1,1%
  9. if %jouri:~0,1% EQU 0 set jouri=%jouri:~1,1%
  10. set /a diffperiode=(%moisi%*30)+%jouri%
  11. echo debut annee %diffperiode%
  12. set /A difannee=%periode%/365
  13. set /A ani=%ani%-%difannee%
  14. echo %difannee% ; %ani%
  15. set /a difjour=%periode%-(%difannee%*365)
  16. if %diffperiode%  LSS %difjour% goto rattrapagemois
  17. set /a moisref=%difjour%/30
  18. echo %moisref%
  19. set /a moisi=%moisi%-%moisref%
  20. echo %moisref% ; %moisi%
  21. set /a jourref=%difjour%-(%moisref%*30)
  22. echo %jourref%
  23. if %jourref% GTR %jouri% (
  24. set /a moisi=%moisi%-1
  25. set jouri=%jourref%-%jouri%
  26. ) ELSE (
  27. set /a jouri=%jouri%-%jourref%
  28. )
  29. echo %jourref% ; %jouri%
  30. goto fin
  31. :rattrapagemois
  32. set /A ddif=%difjour%-%diffperiode%
  33. set /A ani=%ani%-1
  34. set /A diffmois=%ddif%/30
  35. echo %diffmois%
  36. echo %ddif%
  37. echo %difjour%
  38. set /a moisi=12-%diffmois%
  39. echo %moisi%
  40. set /A diffjour=%ddif%-(%diffmois%*30)
  41. set /a jouri=%jouri%-%diffjour%
  42. echo %jouri%
  43. :fin
  44. rem on arrive avec %ani% , %moisi% et %jouri% 
  45. rem qui sont les jour mois et année compte tenu du cécalage de la période
  46. rem on peut affiner, je suis parti du principe qu'un mois fait 30 jours

Reply

Marsh Posté le 09-10-2008 à 16:37:11    

bon Voila la solution (avec l'aimable participation et resolution :D de magma² sur www.developpez.com)
 

Code :
  1. REM ---------------------------------------------------------------------------
  2. REM DEFINITION DE JOUR D'EXECUTION J+3
  3. REM ---------------------------------------------------------------------------
  4. @echo off
  5. set /a NJ=3
  6. set /a J=1%DATE:~0,2% - 100
  7. set /a M=1%DATE:~3,2% - 100
  8. set /a A=%DATE:~6,4%
  9. set /a JJ=%NJ% + ((1461 * (%A% + 4800 + (%M% - 14) / 12)) / 4 + (367 * (%M% - 2 - 12 * ((%M% - 14) / 12))) / 12 - (3 * ((%A% + 4900 + (%M% - 14) / 12) / 100)) / 4 + %J% - 32075)
  10. set /a T0=%JJ% + 68569
  11. set /a T1=(4 * %T0%) / 146097
  12. set /a T0=%T0% - (146097 * %T1% + 3) / 4
  13. set /a T2=(4000 * (%T0% + 1)) / 1461001
  14. set /a T0=%T0% - (1461 * %T2%) / 4 + 31
  15. set /a T3=(80 * %T0%) / 2447
  16. set /a J=%T0% - (2447 * %T3%) / 80
  17. set /a M=%T3% + 2 - (12 * (%T3% / 11))
  18. set /a A=100 * (%T1% - 49) + %T2% + (%T3% / 11)
  19. if %J% LSS 10 set J=0%J%
  20. if %M% LSS 10 set M=0%M%
  21. echo.
  22. echo Dans 3 jours nous serons le %J%/%M%/%A%
  23. echo.
  24. REM ---------------------------------------------------------------------------
  25. REM PLANIFICATION DU SCRIPT DE CHANGEMENT DE MOT DE PASSE DANS 3 JOURS
  26. REM ---------------------------------------------------------------------------
  27. schtasks /delete /tn modif-password-ad /F
  28. schtasks /create /tn modif-password-ad /tr %cd%\modif-password-ad.cmd /sc once /sd %J%/%M%/%A% /st 00:01:00 /ru DOMAIN\administrateur /rp password


Message édité par dob2806 le 09-10-2008 à 16:41:03
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed