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

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
africanism
Niveau 4
Niveau 4
Messages : 85
Enregistré le : mar. 24 juin 2008 20:05
Status : Hors ligne

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

#1

Message 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
Avatar du membre
jumby
Niveau 5
Niveau 5
Messages : 118
Enregistré le : jeu. 12 juin 2008 17:50
Status : Hors ligne

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

#2

Message 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
 
alex65
Niveau 2
Niveau 2
Messages : 24
Enregistré le : ven. 27 juil. 2007 12:30
Status : Hors ligne

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

#3

Message 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
Avatar du membre
jumby
Niveau 5
Niveau 5
Messages : 118
Enregistré le : jeu. 12 juin 2008 17:50
Status : Hors ligne

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

#4

Message 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.
alex65
Niveau 2
Niveau 2
Messages : 24
Enregistré le : ven. 27 juil. 2007 12:30
Status : Hors ligne

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

#5

Message 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.
tolf
Niveau 7
Niveau 7
Messages : 318
Enregistré le : ven. 15 févr. 2008 12:25
Localisation : Paris
Status : Hors ligne

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

#6

Message 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.
Lisez la documentation d'AutoIt en français (et participez svp :mrgreen:) !

Mes UDF :
[/i][/b]
Avatar du membre
GhostLine
Niveau 7
Niveau 7
Messages : 342
Enregistré le : jeu. 12 mars 2009 15:28
Localisation : Paris
Status : Hors ligne

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

#7

Message 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 ^^
tolf
Niveau 7
Niveau 7
Messages : 318
Enregistré le : ven. 15 févr. 2008 12:25
Localisation : Paris
Status : Hors ligne

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

#8

Message 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.
Lisez la documentation d'AutoIt en français (et participez svp :mrgreen:) !

Mes UDF :
[/i][/b]
SagePourpre
Niveau 7
Niveau 7
Messages : 442
Enregistré le : dim. 06 juil. 2008 09:11
Status : Hors ligne

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

#9

Message 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.
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
Avatar du membre
GhostLine
Niveau 7
Niveau 7
Messages : 342
Enregistré le : jeu. 12 mars 2009 15:28
Localisation : Paris
Status : Hors ligne

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

#10

Message 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 ^^
SagePourpre
Niveau 7
Niveau 7
Messages : 442
Enregistré le : dim. 06 juil. 2008 09:11
Status : Hors ligne

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

#11

Message 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é)
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
Serge63
Niveau 4
Niveau 4
Messages : 71
Enregistré le : lun. 22 juin 2009 14:54
Localisation : Clermont-ferrand
Status : Hors ligne

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

#12

Message 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.

.
Modifié en dernier par Tlem le ven. 21 août 2009 09:33, modifié 1 fois.
Raison : Ajout balise code
Répondre