[R] Suppression automatique d'un script.au3 quand il quitte

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
XenaMelody
Niveau 4
Niveau 4
Messages : 67
Enregistré le : mar. 25 oct. 2011 00:45
Status : Hors ligne

[R] Suppression automatique d'un script.au3 quand il quitte

#1

Message 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 !
Modifié en dernier par XenaMelody le jeu. 27 oct. 2011 13:47, modifié 1 fois.
XenaMelody
L'esprit sert à tout, mais il ne mène à rien.
Talleyrand
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Suppression automatique d'un script.au3 quand il qu

#2

Message par sylvanie »

Bonjour, on a deux exple de fonctions "suicide" ici
viewtopic.php?f=3&t=228
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Avatar du membre
XenaMelody
Niveau 4
Niveau 4
Messages : 67
Enregistré le : mar. 25 oct. 2011 00:45
Status : Hors ligne

Re: [..] Suppression automatique d'un script.au3 quand il qu

#3

Message 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 :shock: . $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)
XenaMelody
L'esprit sert à tout, mais il ne mène à rien.
Talleyrand
GaRydelaMer
Niveau 7
Niveau 7
Messages : 450
Enregistré le : mer. 18 mars 2009 22:12
Localisation : Montpellier
Status : Hors ligne

Re: [..] Suppression automatique d'un script.au3 quand il qu

#4

Message 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
 
Avatar du membre
XenaMelody
Niveau 4
Niveau 4
Messages : 67
Enregistré le : mar. 25 oct. 2011 00:45
Status : Hors ligne

Re: [..] Suppression automatique d'un script.au3 quand il qu

#5

Message par XenaMelody »

Merci, j'ai compris pourquoi il faut mettre FileDelete() avant. Je passe en résolut.
XenaMelody
L'esprit sert à tout, mais il ne mène à rien.
Talleyrand
Scharz
Niveau 2
Niveau 2
Messages : 22
Enregistré le : lun. 14 janv. 2013 20:19
Status : Hors ligne

Re: [R] Suppression automatique d'un script.au3 quand il qui

#6

Message par Scharz »

Je n'ai pas compris comment choisir le fichier à supprimer , on change scrath.bat , je vois pas
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

Re: [R] Suppression automatique d'un script.au3 quand il qui

#7

Message 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 ;)
Scharz
Niveau 2
Niveau 2
Messages : 22
Enregistré le : lun. 14 janv. 2013 20:19
Status : Hors ligne

Re: [R] Suppression automatique d'un script.au3 quand il qui

#8

Message 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é
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Suppression automatique d'un script.au3 quand il qui

#9

Message 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.
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é".
Répondre