Page 1 sur 1
[R] Suppression automatique d'un script.au3 quand il quitte
Posté : jeu. 27 oct. 2011 11:35
par XenaMelody
Bonjour !
J'ai un autre problème. Comment faire pour qu'un script se supprime automatiquement sans qu'un autre script qui s'en charge ?
J'ai essayer FileDelete(@ScriptFullPath) mais ça ne marche pas. Suis-je obligé d'utiliser une ressource externe, un autre script ? Et si oui, comment faire pour savoir si ce dernier a fini ( dans tout types de script : script ne faisant pas appelle à une fenêtre, plusieurs scripts lancés en même temps )
Merci d'avance !
Re: [..] Suppression automatique d'un script.au3 quand il qu
Posté : jeu. 27 oct. 2011 11:44
par sylvanie
Bonjour, on a deux exple de fonctions "suicide" ici
viewtopic.php?f=3&t=228
Re: [..] Suppression automatique d'un script.au3 quand il qu
Posté : jeu. 27 oct. 2011 12:07
par XenaMelody
Merci, testé et approuvé !
Code : Tout sélectionner
Func _SelfDelete($iDelay = 0)
Local $sCmdFile
FileDelete(@TempDir & "\scratch.bat")
$sCmdFile = 'ping -n ' & $iDelay & '127.0.0.1 > nul' & @CRLF _
& ':loop' & @CRLF _
& 'del "' & @ScriptFullPath & '"' & @CRLF _
& 'if exist "' & @ScriptFullPath & '" goto loop' & @CRLF _
& 'del ' & @TempDir & '\scratch.bat'
FileWrite(@TempDir & "\scratch.bat", $sCmdFile)
Run(@TempDir & "\scratch.bat", @TempDir, @SW_HIDE)
EndFunc
J'ai récuperé cette fonction mais j'ai du mal à la comprendre

. $sCmdFile c'est du batch je suppose mais il supprime le fichier scratch.bat ensuite il le lance ? J'ai du mal a comprendre cette ordre

...
Code : Tout sélectionner
FileDelete(@TempDir & "\scratch.bat")
FileWrite(@TempDir & "\scratch.bat", $sCmdFile)
Run(@TempDir & "\scratch.bat", @TempDir, @SW_HIDE)
Re: [..] Suppression automatique d'un script.au3 quand il qu
Posté : jeu. 27 oct. 2011 12:25
par GaRydelaMer
C'est portant simple
FileDelete(@TempDir & "\scratch.bat")
FileWrite(@TempDir & "\scratch.bat", $sCmdFile)
Run(@TempDir & "\scratch.bat", @TempDir, @SW_HIDE)
FileDelete, efface le fichier pour être sur de lancer le bon genre tu as 2 scripts AutoIt qui vont se supprimer, afin d’être sur de vire le bon au moment de l'appel de la fonction dans 1 script
Filwrite, ici on va mettre le contenu de la variable $cmdFile le code du batch dans le fichier précédemment supprime donc on va le créer
Run, bin va exécuter le batch, dans une fenêtre "dos" masqué
Normalement le batch va se supprimer tout seul à la fin le 1er file delete c'est pour être sur zen cas de plantage pendant l’exécution du batch qui peu être plus ou moins long en fonction du ping
Dans le même style j'ai fait une fonction pour mettre à jour un script
Je dépose mes mise à jour sur un serveur au boulot, et a chaque lancement des scripts je vérifie la version
Si une mise à jour existe alors je lance cette fonction qui va mettre le programme à jour
Code : Tout sélectionner
Func _SelfUpdate($Source, $iDelay = 2, $FName = @ScriptName, $Reload = True)
Local $sCmdFile, $sFileName
$sFileName = @TempDir & "\SelfUpdate_" & $FName & ".bat"
If FileExists($sFileName) Then FileDelete($sFileName)
$sCmdFile = 'ping -n ' & $iDelay & ' 127.0.0.1 > nul' & @CRLF _
& ':loop' & @CRLF _
& 'del "' & @ScriptFullPath & '" > nul' & @CRLF _
& 'if exist "' & @ScriptFullPath & '" goto loop' & @CRLF _
& 'copy "' & $Source & '" "' & @ScriptDir & '"' & @CRLF
If $Reload Then $sCmdFile &= @CRLF & '"' & @ScriptFullPath & '"' & @CRLF
$sCmdFile &= 'del ' & $sFileName
FileWrite($sFileName, $sCmdFile)
Run($sFileName, @TempDir, @SW_HIDE)
EndFunc ;==>_SelfUpdate
Func _Verif_Update($PathServeur)
Local $V_Local = FileGetVersion(@ScriptFullPath)
Local $V_Server = FileGetVersion($PathServeur)
If $V_Local < $V_Server Then
If MsgBox(4 + 32 + 262144, "Mise à jour", "Vous possédez la version: " & $V_Local & @LF & _
"Une version plus récente (" & $V_Server & ") va être installé.") = 6 Then
_SelfUpdate($PathServeur, 5)
Exit
EndIf
Else
MsgBox(0, "Mise à jour", "Vous possédez déjà la dernière version: " & $V_Local)
EndIf
EndFunc ;==>_Verif_Update
Re: [..] Suppression automatique d'un script.au3 quand il qu
Posté : jeu. 27 oct. 2011 13:47
par XenaMelody
Merci, j'ai compris pourquoi il faut mettre FileDelete() avant. Je passe en résolut.
Re: [R] Suppression automatique d'un script.au3 quand il qui
Posté : mer. 20 févr. 2013 22:28
par Scharz
Je n'ai pas compris comment choisir le fichier à supprimer , on change scrath.bat , je vois pas
Re: [R] Suppression automatique d'un script.au3 quand il qui
Posté : mer. 20 févr. 2013 23:12
par ani
un auto destructeur ?
taper ceux-ci dans votre editeur,sauvegardé et excuté le
Code : Tout sélectionner
MsgBox(32,"Destructeur", "effacement du fichier?")
If Not @compiled then FileDelete(@ScriptFullPath)
je vois pas pkoi le filedelete ne fonctionnerai pas
chaque fichier executer possede un identifiant:nomdu fichier,pid,thread
faut voir comment ton script est structuré boucle while ?
je trouve inutilie l'utilisation d'un bat (détruit deux fichier au lieu d'un seul) tant taper tout el code en bat ou vbs

Re: [R] Suppression automatique d'un script.au3 quand il qui
Posté : mer. 20 févr. 2013 23:36
par Scharz
En gros ce que je veut faire c'est :
Un programme appelé "kill "
Kill va télécharger un fichier avec inetget et quand il sera télécharger on le lance puis " kill " ce supprime une fois tout ça terminé
Re: [R] Suppression automatique d'un script.au3 quand il qui
Posté : jeu. 21 févr. 2013 07:04
par Tlem
L'auto-effacement par FileDelete peut fonctionner dans la plupart des cas, mais il existe des cas ou cela ne fonctionne pas. Dans ce cas précis, la meilleurs solution est d'utiliser un programme extérieur (.bat) qui s'occupera de faire ce qu'il y a à faire le moment venu. Cherchez sur le forum US ou FR après SelfDelete.