[R] Comment lancer un script toutes les minutes

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
oliviernouhi
Niveau 1
Niveau 1
Messages : 10
Enregistré le : jeu. 23 févr. 2012 11:30
Status : Hors ligne

[R] Comment lancer un script toutes les minutes

#1

Message par oliviernouhi »

Bonjour,

J'ai un script AutoIt très simple qui se connecte à mon ftp et il supprime un fichier X et le remplace par un fichier Y(très léger).
Mon script met 8-10 secondes en tout.

Actuellement je le lance de façon automatique via le " Planificateur de tâches Windows " mais on ne peut faire que toute les 5 minutes.

Je voudrais le faire toutes les minutes.
Ou même encore mieux, si cela existe : si le fichier X est différent du fichier Y alors on le remplace, sinon on fait rien.

Voici mon petit script :

Code : Tout sélectionner

$Pid = Run("C:\Program Files\FileZilla FTP Client\filezilla.exe") ; lancer le prog
WinWaitActive("FileZilla") ; attendre le prog se lance
WinSetOnTop("FileZilla", "", 0) ; mettre le prog en premier plan
;Sleep(2000) ; wait 2 sec

Send("nom_ftp")
Send("{TAB}")
Send("user_ftp")
Send("{TAB}")
Send("password_ftp")
Send("{TAB}")
Send("21")
Send("{TAB}"&@CRLF) ; tab ET enter
Send("{ESC}")

Sleep(1000) ; wait 1 secs

Send("{TAB 3}") ;
Send("C:\Users\onouhi\Desktop"&@CRLF)
Send("{ESC}")

Sleep(1000)
Send("{TAB 5}") ;
Send("{DOWN 6}") ;
Send("{DEL}"&@CRLF) ;
Send("{ESC}")

Sleep(1000)
Send("{TAB 6}") ;

Send("{DOWN 3}") ;

Sleep(1000)
Send(@CRLF)

Sleep(1000)
Send(@CRLF)

Sleep(1000)
Send("{ESC}")

Sleep(1000)
ProcessClose($pid) ; close le prog
Merci d'avance pour votre aide/conseil, restant à votre disposition

Olivier
Modifié en dernier par oliviernouhi le lun. 27 févr. 2012 14:40, modifié 1 fois.
Avatar du membre
yohan8
Niveau 6
Niveau 6
Messages : 245
Enregistré le : mer. 07 déc. 2011 22:34
Localisation : Rhône
Status : Hors ligne

Re: [..] Comment lancer un script toutes les minutes

#2

Message par yohan8 »

Tu peux faire rentrer ton script dans une boucle.

Code : Tout sélectionner

$n = 0
while $n = 0 ;tant que la valeur n reste à 0 on reste dans la boucle

[ton script]

sleep(60000) ;on attend une minute pour relancer ton script
If (action a vérifier) then ;pour trouver une échappatoir 
$n += 1 ;dans ce cas là on sort de la boucle et ton script se ferme
endif
Wend
Avatar du membre
TopXm
Niveau 6
Niveau 6
Messages : 260
Enregistré le : mer. 25 mai 2011 16:37
Localisation : Usa
Status : Hors ligne

Re: [..] Comment lancer un script toutes les minutes

#3

Message par TopXm »

Salut,

Pour l'exécution tout les X minutes, voir aussi AdlibRegister
Avatar du membre
TT22
Membre émérite
Membre émérite
Messages : 1566
Enregistré le : lun. 18 avr. 2011 15:21
Localisation : La Quatrième Dimension
Status : Hors ligne

Re: [..] Comment lancer un script toutes les minutes

#4

Message par TT22 »

@yohan8 : Ton script est assez bien, mais le problème, c'est que comme oliviernouhi l'a dit, son script met 8~10 secondes.
Et tu met un Sleep pour 60 secondes.
On fait le calcul... 70 secondes environ :P
Ce qui crée un décalage, et en 6 minutes on exécute que 5 fois le script :?

Le mieux serait d'utiliser un Timer...
► Afficher le texte
Cordialement,
TT22
Avatar du membre
yohan8
Niveau 6
Niveau 6
Messages : 245
Enregistré le : mer. 07 déc. 2011 22:34
Localisation : Rhône
Status : Hors ligne

Re: [..] Comment lancer un script toutes les minutes

#5

Message par yohan8 »

Bigre voilà qu'on chipote :shock:
--> je sors :mrgreen:
oliviernouhi
Niveau 1
Niveau 1
Messages : 10
Enregistré le : jeu. 23 févr. 2012 11:30
Status : Hors ligne

Re: [..] Comment lancer un script toutes les minutes

#6

Message par oliviernouhi »

Merci beaucoup pour vos réponses, effectivement j'avais pas pensé a cette boucle.

Une dernière petite question :

Par contre au niveau mémoire, étant donné que le script va tourner en continu c'est pas trop gourmand (si il tourne 5 jours de suite par exemple )?
Avatar du membre
TopXm
Niveau 6
Niveau 6
Messages : 260
Enregistré le : mer. 25 mai 2011 16:37
Localisation : Usa
Status : Hors ligne

Re: [..] Comment lancer un script toutes les minutes

#7

Message par TopXm »

C'est que ça le fait pas le AddLibRegister ?
Avatar du membre
TT22
Membre émérite
Membre émérite
Messages : 1566
Enregistré le : lun. 18 avr. 2011 15:21
Localisation : La Quatrième Dimension
Status : Hors ligne

Re: [..] Comment lancer un script toutes les minutes

#8

Message par TT22 »

Et bien, c'est vrai que ça risque d'utiliser un peut de mémoire...
Mais j'ai mis ça :

Code : Tout sélectionner

while 1
    $Timer = TimerInit()
    [ton script]

    while (TimerDiff($Timer) <= 60000)
        [color=#FF0000]Sleep(1)[/color]
    Wend
Wend
Ça ralentit déjà un peut la boucle, mais si tu veux empêcher que ça prenne trop de mémoire, tu peux l'augmenter :wink:
Mais plus tu l'augmente, plus ton script se décale, par exemple, si tu le met à 1000, le script se décalera d'entre 0 et 1 seconde à chaque minutes.

Donc, le plus sure serait de se baser sur l'heure :wink: , comme ça :
► Afficher le texte
Comme ça, il n'y a aucun décalage possible :wink:

PS : Tu vas laisser ton ordi allumé pendant 5 jours :shock:
J'espère qu'il a un ventilateur :lol:
Cordialement,
TT22
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Comment lancer un script toutes les minutes

#9

Message par mikell »

Pfff TT22 , franchement... :roll:
TopXm a raison évidemment, il faut AdlibRegister
Pas de décalage, meilleur pour les ressources
Et la collection de Send est vraiment pas géniale, si tu touches à ton clavier au mauvais moment, tu risques d'avoir des effets intéressants
Pourquoi ne pas utiliser les fonctions FTP d'autoit ?
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Comment lancer un script toutes les minutes

#10

Message par Tlem »

oliviernouhi a écrit :Ou même encore mieux, si cela existe : si le fichier X est différent du fichier Y alors on le remplace, sinon on fait rien.
Je pense franchement que ceci est à préférer, plutôt qu'une boucle qui risque d'être inutile.

Commencez par régler votre problème sur l'autre sujet, car vraiment l'automation de FileZilla n'est pas le choix le plus judicieux avec AutoIt puisque ce dernier est capable d'exécuter des commande FTP directement.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
oliviernouhi
Niveau 1
Niveau 1
Messages : 10
Enregistré le : jeu. 23 févr. 2012 11:30
Status : Hors ligne

Re: [..] Comment lancer un script toutes les minutes

#11

Message par oliviernouhi »

je vais regarder ce week end

merci pour vos conseils je vous tiens au courant
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Comment lancer un script toutes les minutes

#12

Message par Tlem »

N'oubliez pas la balise [R] dans le titre de votre premier message si votre sujet est résolu.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
lefleu
Niveau 2
Niveau 2
Messages : 16
Enregistré le : mar. 09 déc. 2008 21:11
Status : Hors ligne

Re: [..] Comment lancer un script toutes les minutes

#13

Message par lefleu »

Si je peux te conseiller, les sleep() sont à éviter. Sa met en pause le programme et en attendant tu ne peux rien faire. Une chose pas mal que je te conseille pour ton petit script, c'est de créer une fonction ou tu y met ton code, et tu fais un AdlibRegister("ta-fonction",60000) 60000 = 60 sec en gros sa appelle la fonction toutes les minutes.

J'espère que sa t'auras aidé ;)
oliviernouhi
Niveau 1
Niveau 1
Messages : 10
Enregistré le : jeu. 23 févr. 2012 11:30
Status : Hors ligne

Re: [..] Comment lancer un script toutes les minutes

#14

Message par oliviernouhi »

Merci pour vos conseils, je vais utiliser AdlibRegister

Voila mon code mais rien ne se passe, ai je fais une erreur ? oublier de déclarer quelquechose ou autre ?

Code : Tout sélectionner

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#cs ----------------------------------------------------------------------------

 AutoIt Version : 3.3.8.1
 Auteur:         MonNom

 Fonction du Script :
    Modèle de Script AutoIt.

#ce ----------------------------------------------------------------------------

; Début du script - Ajouter votre code ci-dessous.

Func MyAdlib()
    $Pid = Run("C:\Program Files\FileZilla FTP Client\filezilla.exe") ; lancer le prog
    WinWaitActive("FileZilla") ; attendre le prog se lance
    WinSetOnTop("FileZilla", "", 0) ; mettre le prog en premier plan
    ;Sleep(2000) ; wait 2 sec

    Send("$FTP")
    Send("{TAB}")
    Send("$User")
    Send("{TAB}")
    Send("$Pass")
    Send("{TAB}")
    Send("$Port_oue_bon_on_sait_que_c_est_21")
    Send("{TAB}"&@CRLF) ; tab ET enter
    Send("{ESC}")

    Sleep(1000) ; wait 1 secs

    Send("{TAB 3}") ;
    Send("C:\Users\onouhi\Desktop"&@CRLF)
    Send("{ESC}")

    Sleep(1000)
    Send("{TAB 5}") ;
    Send("{DOWN 6}") ;
    Send("{DEL}"&@CRLF) ;
    Send("{ESC}")

    Sleep(1000)
    Send("{TAB 6}") ;

    Send("{DOWN 3}") ;

    Sleep(1000)
    Send(@CRLF)

    Sleep(1000)
    Send(@CRLF)

    Sleep(1000)
    Send("{ESC}")

    Sleep(1000)
    ProcessClose($pid) ; close le prog
EndFunc   ;==>MyAdlib

AdlibRegister("MyAdlib",60000)
;...
Exit

 
Dans un premier temps je veux utiliser AdlibRegister et mettre mon code dans une fonction pour automatiser le traitement, et après je verrai comment passer via les fonction ftp de autoIt

Merci d'avance de votre aide
Modifié en dernier par Jerome le lun. 27 févr. 2012 14:45, modifié 1 fois.
Raison : Pas d'id
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Comment lancer un script toutes les minutes

#15

Message par mikell »

Forcément, tu laisses ton script se fermer ...
Essaie ce test avec et sans la boucle while :

Code : Tout sélectionner

AdlibRegister("MyAdlib",2000)

While 1
sleep(10)
Wend

Func MyAdlib()
msgbox(0,"","ok", 1)
EndFunc
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
oliviernouhi
Niveau 1
Niveau 1
Messages : 10
Enregistré le : jeu. 23 févr. 2012 11:30
Status : Hors ligne

[R] Comment lancer un script toutes les minutes

#16

Message par oliviernouhi »

Merci, mon scripte se lance toutes les 15 secondes via :

Code : Tout sélectionner

Func MyAdlib()
    $Pid = Run("C:\Program Files\FileZilla FTP Client\filezilla.exe") ; lancer le prog
    WinWaitActive("FileZilla") ; attendre le prog se lance
    WinSetOnTop("FileZilla", "", 0) ; mettre le prog en premier plan
    ;Sleep(2000) ; wait 2 sec

    Send("$FTP")
    Send("{TAB}")
    Send("$User")
    Send("{TAB}")
    Send("$Pass")
    Send("{TAB}")
    Send("$Port_oue_bon_on_sait_que_c_est_21")
    Send("{TAB}"&@CRLF) ; tab ET enter
    Send("{ESC}")

    Sleep(1000) ; wait 1 secs

    Send("{TAB 3}") ;
    Send("C:\Users\onouhi\Desktop"&@CRLF)
    Send("{ESC}")

    Sleep(1000)
    Send("{TAB 5}") ;
    Send("{DOWN 6}") ;
    Send("{DEL}"&@CRLF) ;
    Send("{ESC}")

    Sleep(1000)
    Send("{TAB 6}") ;

    Send("{DOWN 4}") ;

    Sleep(1000)
    Send(@CRLF)

    Sleep(1000)
    Send(@CRLF)

    Sleep(1000)
    Send("{ESC}")

    Sleep(1000)
    ProcessClose($pid) ; close le prog
EndFunc   ;==>MyAdlib

AdlibRegister("MyAdlib",15000)

While 1
sleep(10)
Wend
Merci beaucoup.

Je clôture ce sujet pour continuer dans l'autre pour les commandes ftp dans AutoIt
Modifié en dernier par Jerome le lun. 27 févr. 2012 14:45, modifié 1 fois.
Raison : Pas d'id
Avatar du membre
Jerome
Niveau 9
Niveau 9
Messages : 661
Enregistré le : mar. 07 avr. 2009 08:35
Localisation : Picardie
Status : Hors ligne

Re: [..] Comment lancer un script toutes les minutes

#17

Message par Jerome »

Coucou,


Je reste pas vraiment FAN de cette solution, en effet, la fonction adlibregister est plutôt utiliser pour de petite opération comme la détection d'erreur.

J'ai déjà observé une saturation de la mémoire de mon script autoit (bon après plus ou moins 72 h) à cause de la fonction adlibregister qui ne "libère pas de la mémoire".

Mais ce n'est que mon avis.


PS : edit de votre post, je pense que c'est plutot moyen de donner les accès a son ftp comme sa, perso je viens de pomper tout le contenu du ftp :lol: :P

PS2 : A ouééé, j'avais accés à toutes les photos ici : http://bde-ges.com/staff-poles/
Faite attention a la prochaine fois, je suis pas méchant mais d'autre si :mrgreen:



Jérôme
oliviernouhi
Niveau 1
Niveau 1
Messages : 10
Enregistré le : jeu. 23 févr. 2012 11:30
Status : Hors ligne

Re: [R] Comment lancer un script toutes les minutes

#18

Message par oliviernouhi »

Merci
Avatar du membre
TopXm
Niveau 6
Niveau 6
Messages : 260
Enregistré le : mer. 25 mai 2011 16:37
Localisation : Usa
Status : Hors ligne

Re: [R] Comment lancer un script toutes les minutes

#19

Message par TopXm »

Hello :)
Jerome a écrit :J'ai déjà observé une saturation de la mémoire de mon script autoit (bon après plus ou moins 72 h) à cause de la fonction adlibregister qui ne "libère pas de la mémoire".
Ah point très intéressant :) Jerome tu préconises quoi du coup ?
Je me suis permis de poser la question à la suite attendu qu'on reste dans le sujet Comment lancer un script toutes les minutes.
Désolé s'il ne fallait pas :( Merci de me confirmer si je dois ouvrir un nouveau topic.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [R] Comment lancer un script toutes les minutes

#20

Message par mikell »

+1
et plein de questions, le sujet est très intéressant
- ce pb de mémoire est dû à adlibregister ou à la fonction qui est adlibregisterisée ?
- existe-t-il un moyen de libérer cette mémoire en sortie de la fonction (réinitialisation, etc) ?
- existe-t-il une alternative ?
etc
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Répondre