Page 1 sur 1

[R] Script qui s'execute tous les 10 minutes??

Posté : mar. 13 nov. 2007 20:30
par Kurser
Bonjour!!

En faite mon but est de céer un script qui s'executerai tous les 10 minutes...

Je suis encore un novice en la matiére, si quelqu'un pourrait m'aider :roll:

Merci :)

Posté : mar. 13 nov. 2007 20:55
par Tlem
Faites une boucle pour lancer votre script, et ajouter une pause de 10Mn !

Code : Tout sélectionner

Sleep(10000)

Boucle?

Posté : mar. 13 nov. 2007 21:26
par Kurser
Désolé mais peux-tu me donner un exemple de boucle??

je sais qu'il faut utiliser while mais je ne sais pas comment formuler le tous..

Si je pouvais avoir un exemple??? Merci mile fois!!!! :)

Posté : mer. 14 nov. 2007 00:06
par SurPriseS
Moi j'avais fait sa pour un script :

Code : Tout sélectionner

While 1
if _DateTimeFormat( _NowCalc(),4) = $sNewDate Then

$sNewDate = _DateAdd( 'n',10, _NowCalc())
$sNewDate = _DateTimeFormat($sNewDate,4)
MsgBox( 4096, "", "Heure +10 minutes: " & $sNewDate )

EndIf
WEnd

Re: Boucle?

Posté : mer. 14 nov. 2007 00:14
par Tlem
Kurser a écrit :Désolé mais peux-tu me donner un exemple de boucle??
Il faudrais voir quel type de script vous compter lancer toutes les dix minutes.

De plus, l'idée de SurPriseS pourrait très bien s'adapter à votre cas.

Posté : mer. 14 nov. 2007 17:05
par Kurser
Merci SurPriseS pour l'exemple

Par contre je l'intergre comme dans mon script????

en faite dans mon script, je lance un fichier batch qui contient des requettes SQL et je voudrais ke ce batch j'execute tous les dix minutes ( et meme par la suite le mettre en service)

Je vous savoir comment j'intergre la boucle dedans..

Merci :oops:

Posté : mer. 14 nov. 2007 21:13
par SurPriseS
Y'a pas de soucis ;)
Bref suffit de rajouter vos instructions a exécuter dans la boucle, à la place de

Code : Tout sélectionner

MsgBox( 4096, "", "Heure +10 minutes: " & $sNewDate )
Sinon dire comment l'intégrer bah sa dépend de votre script ;)

Posté : mer. 14 nov. 2007 21:47
par Tlem
Première approche :

Code : Tout sélectionner

#include <Misc.au3>

; Controle si l'application est déja lancée.
If _Singleton ( @ScriptFullPath , 1 ) = 0 Then Exit 

; Combinaison de touche pour quitter le script en cours.
HotKeySet ( " + !s" , "Fin" ) ; Shift - Alt - s pour sortir du script. 

While 1
RunWait ( "C:\Batch\MonBatch.bat" , "" , @SW_HIDE ) 
Sleep ( 1000 * 600 ) ; 1000ms * ( 10mn = 10 * 60s = 600 ) 
WEnd

Func Fin ( ) 
Exit
EndFunc

2iem approche #include <Misc.au3>

Code : Tout sélectionner

#include <Date.au3>

; Controle si l'application est déja lancée.
If _Singleton ( @ScriptFullPath , 1 ) = 0 Then Exit 

; Combinaison de touche pour quitter le script en cours.
HotKeySet ( " + !s" , "Fin" ) ; Shift - Alt - s pour sortir du script. 

$sNewDate = _DateAdd ( 'n' , 10 , _NowCalc ( ) ) 
While 1
If _DateTimeFormat ( _NowCalc ( ) , 4 ) = $sNewDate Then 
$sNewDate = _DateAdd ( 'n' , 10 , _NowCalc ( ) ) 
$sNewDate = _DateTimeFormat ( $sNewDate , 4 ) 
RunWait ( "C:\Batch\MonBatch.bat" , "" , @SW_HIDE ) 
EndIf
WEnd

Func Fin ( ) 
Exit
EndFunc
Vous avez le choix ...

Posté : mer. 14 nov. 2007 21:54
par Voodoo
eh bien personne ne connez donc timerinit() !

Code : Tout sélectionner

$begin = TimerInit ( ) 
sleep ( 3000 ) 
$dif = TimerDiff ( $begin ) 
MsgBox ( 0 , "Time Difference" , $dif )
Tres utile ! surtout si vous voulez faire autre chose pendant les 10 min..

un autre exemple:

Code : Tout sélectionner

$begin = TimerInit ( ) 
while 1
sleep ( 1 ) 
if TimerDiff ( $begin ) > 5000 then exit msgbox ( 0 , "Timer" , "5 secondes deja !" ) 
wend

Posté : mer. 14 nov. 2007 21:57
par Tlem
Oups, je l'avais oublier celui-là ...

Posté : mer. 14 nov. 2007 21:58
par sylvanie
tiens, moi aussi, je vais mettre ma petite fonction fétiche : "adlibenable" qui est un joker (car on n'a droit qu'à une fonction lancer à la fois par cette dernière) qui crée une sorte de thread en rendant la main au script.
Très utilie pour lancer des routine à répétition temporelle à l'intérieure d'un while

Posté : jeu. 15 nov. 2007 00:09
par Tlem

Code : Tout sélectionner

$begin = TimerInit ( ) 
Sleep ( 1000 * 600 ) 
$dif = TimerDiff ( $begin ) 
MsgBox ( 0 , "Time Difference" , StringFormat ( "%d secondes" , $dif/1000 ) )
Ce script m'a bien afficher 600 secondes, soit 10 minutes.
Je considère donc que le sleep ce base sur le temps machine.

De plus, part rapport à la deuxième solution que j'ai proposer précédemment, cette solution ne consomme pas de temps processeur, alors que l'autre est mortelle (+ de 95%) ...


Edit : Si on rajoute un Sleep(1000) juste avant le Wend, la consomation CPU devient presque nulle.

Posté : jeu. 15 nov. 2007 01:01
par Voodoo
Effectivement comme il n'y a rien dans la boucle ce n'est pas très rentable. Il faut y ajouter votre programme. Sinon reglez le sleep a 100 ou a 10 suivant votre processeur :P

Posté : jeu. 15 nov. 2007 22:28
par Kurser
Merci Beaucoup!!!! c ok :lol: :lol:

Super ce forum!!!!!!!