IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

Supprimer un dossier apres autosuppression du programme de ce dossier


Sujet :

Langage Delphi

  1. #1
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut Supprimer un dossier apres autosuppression du programme de ce dossier
    Bonjour à toutes et à tous...

    J'utilise cette fonction pour supprimer mon propre programme en cours d'utilisation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Procedure TForm1.SelfEfface(Sender: TObject);
     var F :Textfile;
    begin 
      AssignFile(F,Changefileext(paramstr(0),'.bat')); 
      rewrite(F);
      writeln(F,':1');
      writeln(F, Format('Erase "%s"',[paramstr(0)]));
      writeln(F, Format('If exist "%s" Goto 1',[paramstr(0)]));
      writeln(F, Format('Erase "%s"',[changefileext(paramstr(0),'.bat')]));
      closefile(F);
      winexec(PChar(ChangeFileExt(paramstr(0),'.bat')),sw_hide); 
      halt; 
    end;
    Ma question est :
    Admettons que mon programme ce trouve dans le répertoire :
    C:\XXXXXABC\

    Comment je peux faire pour supprimer ce répertoire apres avoir executer la procédure ci-dessus ? (sachant que le Halt me coupe tout)...

    Merci.

  2. #2
    Membre expérimenté
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    984
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 984
    Points : 1 419
    Points
    1 419
    Par défaut
    bonsoir, en créant le .bat dans le dossier temporaire puis vérifier que le dossier contient que ton executable à effacer et un bat comme sa:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    :1
    Erase "C:\test\test.exe"
    If exist "C:\test\test.exe" Goto 1
    rmdir "C:\test"
    Erase"test.bat"
    pour effacer un dossier non vide c'est: rmdir /S /Q "c:\test"

    testé sur xp et plus.
    Il existe 3 sortes de gens: ceux qui savent compter et ceux qui ne savent pas.

  3. #3
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Salut ouiouioui et merci pour ton aide.

    J'ai essayé cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    procedure TForm1.Button1Click(Sender: TObject);
    var
      F :Textfile;
    begin
      AssignFile(F,Changefileext(paramstr(0),'.bat'));
      rewrite(F);
      writeln(F,':1');
      writeln(F, Format('Erase "%s"',[paramstr(0)]));
      writeln(F, Format('If exist "%s" Goto 1',[paramstr(0)]));
    //  writeln(F, 'cd..');
      writeln(F, Format('rmdir "%s"',[ExtractFileDir(paramstr(0))]));
      writeln(F, Format('Erase "%s"',[changefileext(paramstr(0),'.bat')]));
      closefile(F);
      winexec(PChar(ChangeFileExt(paramstr(0),'.bat')),sw_hide);
      halt;
    end;
    avec où sans le 'cd..' mis avant ou apres la ligne writeln(F, Format('Erase "%s"',[changefileext(paramstr(0),'.bat')]));


    Cela ne fonctionne pas, mon répertoire ne se supprime pas.

    Une autre idée ?

  4. #4
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Ok, j'avais pas bien lu ton message, tu parle de dossier temporaire.

    Voilà la procédure qui fonctionne trés bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    procedure TForm1.Button1Click(Sender: TObject);
    var
      F :Textfile;
      Chemin, Fichier : String;
    begin
      Chemin := ExtractFileDir(paramstr(0));
      Fichier := 'C:\'+ChangeFileext(ExtractFileName(paramstr(0)),'.bat');
      AssignFile(F,Fichier);
      rewrite(F);
      writeln(F,':1');
      writeln(F, Format('Erase "%s"',[paramstr(0)]));
      writeln(F, Format('If exist "%s" Goto 1',[paramstr(0)]));
      writeln(F, 'cd\');
      writeln(F, Format('rmdir "%s"',[Chemin]));
      writeln(F, Format('Erase "%s"',[Fichier]));
      closefile(F);
      winexec(PChar(Fichier),sw_hide);
      halt;
    end;
    Merci OuiouiOui.

  5. #5
    Membre expérimenté
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    984
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 984
    Points : 1 419
    Points
    1 419
    Par défaut
    oui mais si C n'existe pas, sa arrive, ou si le bat ne se supprime pas pour x raison (reset, plantage) c'est pour sa que moi j'utilise le dossier temporaire, en cas de pepin un nettoyage disque l'enleve.

    Code pascal : Sélectionner tout - Visualiser dans une fenêtre à part
      Fichier := IncludeTrailingPathDelimiter(GetEnvironmentVariable('TEMP')) + ChangeFileExt(ExtractFileName(ParamStr(0)),'.bat');
    Il existe 3 sortes de gens: ceux qui savent compter et ceux qui ne savent pas.

  6. #6
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Salut,

    ok tu as raison, on ne sais jamais.

    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/11/2006, 16h29
  2. Réponses: 4
    Dernier message: 17/10/2006, 15h11
  3. Mémoire après exécution du programme
    Par Woufeil dans le forum C++
    Réponses: 14
    Dernier message: 23/08/2006, 01h33
  4. comment changer nom du dossier apres documents and settings
    Par orientalys dans le forum Windows XP
    Réponses: 1
    Dernier message: 09/12/2005, 01h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo