Page 1 sur 2

[R] Execution planifiée jours de la semaine/plage horaire

Posté : lun. 11 mai 2009 18:52
par Julien
Bonsoir,

Je suis en train de faire un petit script qui doit tournée du lundi au vendredi de 07h10 à 17h30 afin d'actualiser l'affichage dans un logiciel. Dans cette plage horaire je dois exécuter une action (une seule fois dans la journée) puis une action toutes les 2 minutes et une autre toutes les 40 minutes.

J'ai écrit un bout de code qui me parait bien mais j'aimerais avoir votre avis.

Le voici :
► Afficher le texteCode
Edit : petites modifications
Edit : Correction des "sleep"

D'avance merci.

Re: [...] Execution planifiée jours de la semaine/plage horaire

Posté : lun. 11 mai 2009 18:59
par Yogui
Franchement pour un script qui doit se lancer tout les jours hors week end j'utilise la commande DOS AT pour le lancer

Re: [...] Execution planifiée jours de la semaine/plage horaire

Posté : lun. 11 mai 2009 19:05
par Julien
Je ne peux tester que pendant la journée et j'ai essayé la commande AT mais elle ne fonctionne pas. (chez moi oui pour mes backups)

Je n'ai pas accès à la configuration des postes.

En revanche je sais qu'en utilisateur j'ai bien le retour des dates et heures, d'où ce script.


Sinon pensez vous que cela réponde à mon besoin ? trop lourd ? trop gourmand ? n'importe quoi ?


Merci

Re: [...] Execution planifiée jours de la semaine/plage horaire

Posté : lun. 11 mai 2009 19:28
par Yogui
Comme ça je ne suis pas certain que les sleeps soit correcte 1 seconde = sleep(1000) donc 1 minutes sleep(60000)

Re: [...] Execution planifiée jours de la semaine/plage horaire

Posté : lun. 11 mai 2009 19:33
par Julien
J'ai corrigé. merci.

Si vous avez d'autres commentaires je suis toujours "preneur" !

Re: [...] Execution planifiée jours de la semaine/plage horaire

Posté : lun. 11 mai 2009 23:16
par Tlem
En essayant d'être le plus complet possible, voici une autre solution.
Il vous faudra récupérer l'UDF _Adlib.au3 disponible ici.
► Afficher le texte

Re: [...] Execution planifiée jours de la semaine/plage horaire

Posté : mar. 12 mai 2009 18:25
par Julien
Bonsoir,

Merci pour toutes ces informations.

J'ai pu essayé ce script aujourd'hui, j'ai corrigé quelques erreurs mais je trouve que les timing d'exécution ne sont pas respectés.

Pour utiliser les fonctions _AdlibEnable("Action40Mn", 40000) il faut bien mettre en millisecondes ?

Pour 40 minutes il faudrait pas mettre 2400000 ? et pour 2 minutes, 120000 ?

Merci.

Re: [...] Execution planifiée jours de la semaine/plage horaire

Posté : mar. 12 mai 2009 23:01
par Tlem
Arf, le piège de débutant. :oops:
J'étais trop concentré sur votre sujet et un autre, que je n'ai pas réfléchit correctement.

Mais effectivement c'est bien des millisecondes qu'il faut mettre et donc les valeurs que vous donnez sont exactes.
Désolé. :mrgreen:

Re: [...] Execution planifiée jours de la semaine/plage horaire

Posté : mer. 13 mai 2009 07:26
par Julien
Pas de problème, ça m'a obligé à chercher comment ça fonctionne avant de faire bêtement un copier/coller ! c'est très bien.

Une autre petite chose, il manque les () à _NowTime() sinon erreur lors de la compilation.

Je test tout ça aujourd'hui.

Re: [...] Execution planifiée jours de la semaine/plage horaire

Posté : mer. 13 mai 2009 07:39
par Tlem
J'ai édité le code pour corriger les erreurs.
Il devrait pouvoir fonctionner tel quel. ;)

Re: [...] Execution planifiée jours de la semaine/plage horaire

Posté : mer. 13 mai 2009 08:12
par Julien
ok, il est lancé.

je vais tester.

Re: [...] Execution planifiée jours de la semaine/plage horaire

Posté : mer. 13 mai 2009 10:49
par Julien
alors,

j'ai l'impression qu'il n'incrémenta pas ma variable $nbC pour l'action unique en début de journée.
du coup il tourne en boucle sur la première étape mais il ne va pas plus loin.

je n'arrive pas non plus à incrémenter les lignes dans le fichier de log, d'ailleurs une petite erreur en début de code : $LogFile = FileOpen("Log.log", 1)

j'ai rajouté FileOpen

une idée ?

Re: [...] Execution planifiée jours de la semaine/plage horaire

Posté : mer. 13 mai 2009 13:13
par Julien
J'ai apporté une petite modification en n'initialisant pas $nbC

global $nbC

avec des msgbox je constate que l'état change bien de vide à 1, par contre les actions 2 minutes et 40 minutes ne semble pas s'exécuter.

j'ai l'impression que les deux actions ne sont pas lues. Ça répète juste la première boucle.

Re: [...] Execution planifiée jours de la semaine/plage horaire

Posté : mer. 13 mai 2009 13:48
par Julien
Nouveau test.

Bon en fait le début fonctionne correctement. à priori.

Et les deux actions (02 & 40 minutes) sont bien lancées, mais l'une derrière l'autre en continue. Extrait du fichier de Log :
Début de process le 13/05/2009 à 13:38:10
Taskkill le 13/05/2009 à 13:38:10
Run SC le 13/05/2009 à 13:38:12
Ouverture file d'attente le 13/05/2009 à 13:39:12
Run Action02Mn le 13/05/2009 à 13:39:18
Run Action40Mn le 13/05/2009 à 13:39:18
L'action 1036 n'à pas pu être exécutée le 13/05/2009 à 13:39:18
Run Action02Mn le 13/05/2009 à 13:39:18
Run Action40Mn le 13/05/2009 à 13:39:18
L'action 1036 n'à pas pu être exécutée le 13/05/2009 à 13:39:19
Run Action02Mn le 13/05/2009 à 13:39:19
Run Action40Mn le 13/05/2009 à 13:39:19
L'action 1036 n'à pas pu être exécutée le 13/05/2009 à 13:39:19
Run Action02Mn le 13/05/2009 à 13:39:19
Run Action40Mn le 13/05/2009 à 13:39:19
L'action 1036 n'à pas pu être exécutée le 13/05/2009 à 13:39:19
Run Action02Mn le 13/05/2009 à 13:39:19
Run Action40Mn le 13/05/2009 à 13:39:19
L'action 1036 n'à pas pu être exécutée le 13/05/2009 à 13:39:19
Run Action02Mn le 13/05/2009 à 13:39:19
Run Action40Mn le 13/05/2009 à 13:39:19
L'action 1036 n'à pas pu être exécutée le 13/05/2009 à 13:39:20
Run Action02Mn le 13/05/2009 à 13:39:20
Run Action40Mn le 13/05/2009 à 13:39:20
L'action 1036 n'à pas pu être exécutée le 13/05/2009 à 13:39:20
Run Action02Mn le 13/05/2009 à 13:39:20
Run Action40Mn le 13/05/2009 à 13:39:20
L'action 1036 n'à pas pu être exécutée le 13/05/2009 à 13:39:20
Run Action02Mn le 13/05/2009 à 13:39:20
Run Action40Mn le 13/05/2009 à 13:39:20
L'action 1036 n'à pas pu être exécutée le 13/05/2009 à 13:39:20
Run Action02Mn le 13/05/2009 à 13:39:20
Run Action40Mn le 13/05/2009 à 13:39:20
L'action 1036 n'à pas pu être exécutée le 13/05/2009 à 13:39:21
Run Action02Mn le 13/05/2009 à 13:39:21
Run Action40Mn le 13/05/2009 à 13:39:21
L'action 1036 n'à pas pu être exécutée le 13/05/2009 à 13:39:21
Run Action02Mn le 13/05/2009 à 13:39:21
Run Action40Mn le 13/05/2009 à 13:39:21
L'action 1036 n'à pas pu être exécutée le 13/05/2009 à 13:39:21
Run Action02Mn le 13/05/2009 à 13:39:21
Run Action40Mn le 13/05/2009 à 13:39:21
L'action 1036 n'à pas pu être exécutée le 13/05/2009 à 13:39:21
Run Action02Mn le 13/05/2009 à 13:39:21
Run Action40Mn le 13/05/2009 à 13:39:21
J'ai bien récupéré le _Adlib.au3 et placé dans le même dossier pour la compilation. pas d'erreur signalé par autoit.

J'ai quand même l'impression qu'il ne fait que passer sur les ligne :
FileWriteLine($LogFile, "Run Action02Mn le " & _NowDate() & " à " & _NowTime() & @CRLF) ; Fichier LOG
_AdlibEnable("Action02Mn", 120000) ; Action d'exécution toute les 02 mn

FileWriteLine($LogFile, "Run Action40Mn le " & _NowDate() & " à " & _NowTime() & @CRLF) ; Fichier LOG
_AdlibEnable("Action40Mn", 2400000) ; Action d'exécution toute les 40 mn
parce qu'il ne m'active pas la fenêtre indiqué dans la fonction Action02Mn/Action40Mn

Auriez-vous une idée ?

Re: [...] Execution planifiée jours de la semaine/plage horaire

Posté : mer. 13 mai 2009 17:23
par Tlem
Oui, je sais pourquoi, encore une fois, précipitation et réflexion ne font pas bon ménages.
C'est lié aux deux _AdlibEnable qui sont activé à chaque fois dans la boucle.

Je regarde ça se soir et j'essaie de faire quelque chose d'un peut plus réfléchit. ;)

Re: [...] Execution planifiée jours de la semaine/plage horaire

Posté : mer. 13 mai 2009 18:22
par Julien
C'est sympa que tu prennes de ton temps ! je vois que tu es toujours hyper actif sur ce forum.

Pour info et parce que je devais faire tourner quelque chose aujourd'hui j'ai utilisé un combiné de mon premier jet et ton premier script.

Ça tourne mais c'est pas très optimisé et j'ai encore quelques améliorations à apporter.

Ceci dit ton code est beaucoup plus clair que le mien donc si tu corrige (au moins pour voir comment ça fonctionne parce que j'y ai passé un bon moment cet après-midi sans trouver de solution) je suis intéressé.

Merci

Re: [...] Execution planifiée jours de la semaine/plage horaire

Posté : mer. 13 mai 2009 22:18
par Tlem
Bon, avec un peut de temps et quelques tests, voici pour moi le script final ;) :
► Afficher le texteWeek Timer
Si les actions ne sont pas exécutées, il se peut qu'il y ait un problème sur la fonction MonProgActif(). Il faut que cette fonction renvoie 1 pour que les autres fonctions puissent être exécutées car si votre appli n'est pas active, je suppose que le timer n'a pas d'intérêt.
J'ai modifié légèrement la fonction au cas ou ...

En ce qui concerne l'écriture du fichier de log, je n'ai eu aucun problèmes.
Il est inutile d'utiliser le FileOpen car le FileWriteLine sait gérer l'ouverture et la fermeture du fichier tout seul.

Voilà, à vous de me dire si ça fonctionne comme vous le désirez. ;)

Edit : J'ai mis à jour l'UDF _Adlib.au3 pour résoudre un problème de déclaration de variable (rien de méchant).

Re: [...] Execution planifiée jours de la semaine/plage horaire

Posté : jeu. 14 mai 2009 08:55
par Julien
Du premier coup !

Une petite remarque, mon clavier/souris sont bien verrouillés pendant l'exécution mais la touche ECHAP ne réagi pas. Je dois fermer ma session pour retrouver le contrôle. En fait quand je fais ECHAP je voudrais pas l'arrêter mais retrouver le contrôle de la souris/clavier et si je une autre combinaison je re-bloque. je vais me pencher la dessus.

Je vais le tester sur une journée. Pour infos ma version d'hier que j'ai laissé tourner toute la nuit ma générée un fichier de log de 12.5Go :lol: qui ma planté mon poste.

J'ai un wamp (serveur LAMP) installé sur ce poste et je me disait que je devrais peux être enregistrer les log dedans. je vais regarder comment ça fonctionne avec autoit et si c'est possible.

Sinon merci encore pour cette aide précieuse !

Re: [...] Execution planifiée jours de la semaine/plage horaire

Posté : jeu. 14 mai 2009 17:43
par Tlem
BlocInput bloque clavier et souris, donc aucune touche ne peut être gérée.
La seule solution :
Remarks

If BlockInput is enabled, the Alt keypress cannot be sent!
The table below shows how BlockInput behavior depends on the Windows version; however, pressing Ctrl+Alt+Del on any platform will re-enable input due to a Windows API feature.

Re: [...] Execution planifiée jours de la semaine/plage horaire

Posté : jeu. 14 mai 2009 18:09
par Julien
Ha ben voila! tout s'explique, j'avais pas connaissance de cela.

Merci pour ta précieuse aide.