Page 1 sur 1

[R] Vider Le contenu d'un Répertoire

Posté : jeu. 02 juil. 2009 21:53
par africanism
Bonjour a tous
voila je voudrais vider le contenu du repertoire c:\temp
bien sur je sais que certain fichier ne pouront etre supprime car en cour d'utilisation

j'ai bien essayer filedelete mais ce n'est pas ce qui me faut ou alors je mi prend mal

Cdt

merci a tous

Re: [..] Vider Le contenue d'un Repertoire

Posté : jeu. 02 juil. 2009 22:10
par jumby
Tu peux supprimer l'intégralité du dossier(excepté ceux en cours d'utilisation) avec la fonction DirRemove :

Code : Tout sélectionner

DirRemove(@TempDir, 1)
Tu peux supprimer un à un les fichiers(excepté ceux en cours d'utilisation) présents dans le dossier :

Code : Tout sélectionner

#Include <File.au3>
#Include <Array.au3>
$FileList=_FileListToArray(@Tempdir)

If @Error=1 Then
    MsgBox (0,"","No Files\Folders Found.")
    Exit
EndIf

for $i = 1 to $FileList[0]
FileDelete(@Tempdir&'\'&$FileList[$i])
Next
 

Re: [..] Vider Le contenue d'un Repertoire

Posté : ven. 03 juil. 2009 00:01
par alex65
Pour éviter de recrééer le dossier "temp" on peut aussi compléter le code comme ça :

Code : Tout sélectionner

#Include <File.au3>
#Include <Array.au3>
$FileList=_FileListToArray(@Tempdir)

If @Error=1 Then
    MsgBox (0,"","No Files\Folders Found.")
    Exit
EndIf

for $i = 1 to $FileList[0]
    $attrib = FileGetAttrib(@Tempdir&'\'&$FileList[$i])
    If @error Then
        MsgBox(4096,"Error", "Could not obtain attributes.")
        Exit
    Else
        If StringInStr($attrib, "D") Then
            DirRemove(@Tempdir&'\'&$FileList[$i], 1)
        Else
            FileDelete(@Tempdir&'\'&$FileList[$i])
        EndIf
    EndIf
Next

Re: [..] Vider Le contenue d'un Repertoire

Posté : ven. 03 juil. 2009 00:27
par jumby
Le code suivant :

Code : Tout sélectionner

#Include <File.au3>
#Include <Array.au3>
$FileList=_FileListToArray(@Tempdir)

If @Error=1 Then
    MsgBox (0,"","No Files\Folders Found.")
    Exit
EndIf

for $i = 1 to $FileList[0]
FileDelete(@Tempdir&'\'&$FileList[$i])
Next
Ne supprimera pas le dossier. Uniquement les fichiers qu'il contient.

Re: [..] Vider Le contenue d'un Repertoire

Posté : ven. 03 juil. 2009 00:35
par alex65
Oui, mais il ne supprimera pas les dossiers, si il y en a. Et comme je trouve dangereux de supprimer un dossier qui fait parti des variables Windows, je me suis permis cette suggestion.

Re: [..] Vider Le contenue d'un Repertoire

Posté : ven. 03 juil. 2009 12:27
par tolf
Pour supprimer tous les dossier et sous-dossiers d'un répertoire, il faudra utiliser une recherche récursive : on a une fonction qui fait la liste des fichiers et qui les supprime un a un (avec par exemple écriture dans la console des fichiers non supprimés) et ensuite, cette fonction fait appel à elle-même pour chaque sous-dossier.
Si vous ne voulez pas supprimer certains sous-dossiers, vous pouvez les spécifier dans le code ou demander à l'utilisateur pour chaque dossier.

Re: [..] Vider Le contenue d'un Repertoire

Posté : ven. 03 juil. 2009 12:30
par GhostLine
Dans ce cas, rajouter les fichiers systèmes, cachés, et en lecture seule dans la liste des choses à ne pas zapper serait peut être une bonne idée ^^

Re: [..] Vider Le contenue d'un Repertoire

Posté : lun. 06 juil. 2009 11:47
par tolf
D'un autre côté, je ne pense pas que windows ou n'importe quel programme mette des fichiers sensibles et à ne pas supprimer dans le dossier temp vu que ce dossier est justement fait pour stocker des fichiers à supprimer après leur utilisation.
Et si vous voulez vraiment plus de sécurité, supprimez les depuis votre navigateur.

Re: [..] Vider Le contenue d'un Repertoire

Posté : lun. 06 juil. 2009 19:31
par SagePourpre
Comme mentionné par Tolf, il n'y a absolument aucun danger à supprimer l'intégralité des fichier contenus dans le dossier temp.


Le code le plus simple à déjà été donné, c'est carrément d'utiliser DirRemove

Code : Tout sélectionner

$temp = "C:\windows\temp\"
DirRemove($temp,1)
DirCreate($temp)

Je suis même pratiquement sur qu'il est inutile de recréer le dossier "Temp" puisque selon moi, il se recréera automatiquement de lui-même si tôt qu'un
fichier y sera déplacé par le système d'exploitation (Je l'ai quand même mis juste au cas)


Pour un nettoyage plus "complet" des fichiers inutiles, tu peux aussi utiliser Ccleaner portable. Il te proposera en prime d'effacer des fichiers temporaires à d'autres endroit sur ton ordinateur (ainsi que nettoyer ton historique, etc...) et de plus, il est très simple d'utilisation. Il y'a même moyen de faire le ménage dans regedit avec cette application de façon très simple.

Re: [..] Vider Le contenue d'un Repertoire

Posté : jeu. 09 juil. 2009 10:28
par GhostLine
Il me parait surtout improbable qu'il se laisse supprimer, dans la mesure où la grande majorité du temps, il y a un fichier en cours d'accès en son sein ^^

Re: [..] Vider Le contenue d'un Repertoire

Posté : jeu. 09 juil. 2009 18:26
par SagePourpre
GhostLine a écrit :Il me parait surtout improbable qu'il se laisse supprimer, dans la mesure où la grande majorité du temps, il y a un fichier en cours d'accès en son sein ^^

S'il ne se laisse pas supprimer, les fichiers qui ne sont pas en cours d'utilisation seront supprimés (du moins, c'est ce que ça a fait lorsque je l'ai testé)

Re: [..] Vider Le contenue d'un Repertoire

Posté : mer. 19 août 2009 22:15
par Serge63
Bonsoir

Je me suis inspiré de ce post pour créer un programme dont j'avais besoin. Dans le cadre de mon travail, je dois régulièrement faire le ménage sur des ordinateurs qui comportent plusieurs utilisateurs ; alors ça devient vite fastidieux pour faire le ménage dans tous les profils...

J'ai décidé de vous faire part du résultat de mes recherches, car je pense que ce petit programme devrait intéresser les administrateurs qui sont dans mon cas.
► Afficher le texte
Je suis preneur de toute remarque en vue d'optimiser ou améliorer ce code.

.