[R] Lister et supprimer des dossiers vides

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
jeanmimigab
Niveau 5
Niveau 5
Messages : 123
Enregistré le : sam. 08 oct. 2011 14:01
Status : Hors ligne

[R] Lister et supprimer des dossiers vides

#1

Message par jeanmimigab »

Bonsoir à tous(tes)

J’essaie de coder un script, mais comme d'hab...je galère ! :mrgreen:

Le but est de lister les dossiers vides et de les supprimer.

J'ai tenter beaucoup de script différents, mais aucuns d'eux ne fonctionnent
Je liste les dossier avec "_FileListToArray" et vérifie s'ils sont vide avec DirGetSize
Le script se trouve dans le dossier "test dir" et la recherche/contrôle doit s'effectuer dans le dossier "dir"
je visualise le résultat mais c'est après que je bloque
voici le début du code...en espérant je cela démarre de la bonne manière.

Code : Tout sélectionner

#include <FileConstants.au3>
#include <MsgBoxConstants.au3>
#include <ComboConstants.au3>
#include <File.au3>
#include <Array.au3>
#include <ButtonConstants.au3>
#include <DateTimeConstants.au3>
#include <EditConstants.au3>
#include <date.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>


$FileList=_FileListToArray("C:\test dir\dir\", "*")
$fldr1 = $FileList
$Output = _ArrayDisplay($FileList,"$FileList")
$sizefldr1 = DirGetSize($FileList, 2)
If Not @error Then
    If Not $sizefldr1[1] And Not $sizefldr1[2] Then
        MsgBox(0,"vide","Dossier vide trouvé")

    Else
        MsgBox(0, "plein", "Dossiers plein trouvés: " & $fldr1)
    EndIf
Else
    MsgBox(0, "erreur", "erreur de recherche: " & $fldr1)
EndIf
merci d'avance pour votre aide

@Bientôt
Modifié en dernier par jeanmimigab le sam. 06 févr. 2016 16:55, modifié 1 fois.
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Lister et supprimer des dossiers vides

#2

Message par orax »

Actuellement tu listes les dossiers et les fichiers avec _FileListToArray (c'est le comportement par défaut) donc DirGetSize retournera des erreurs s'il y a des fichiers.
DirGetSize attend un chemin de dossier et tu lui donne un Array ($FileList).
Par défaut, DirGetSize ne retourne pas un Array.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
jeanmimigab
Niveau 5
Niveau 5
Messages : 123
Enregistré le : sam. 08 oct. 2011 14:01
Status : Hors ligne

Re: [..] Lister et supprimer des dossiers vides

#3

Message par jeanmimigab »

Bonsoir Orax,

Je vais essayer de partir sur une autre méthode alors...

Merci pour les infos :wink:
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1037
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Lister et supprimer des dossiers vides

#4

Message par walkson »

Code : Tout sélectionner

#include <File.au3>
$FileList=_FileListToArray(@DesktopDir, "*",2,True);dossier avec chemin

_ArrayDisplay($FileList,"$FileList")
For $i = 1 To $FileList[0]
$sizefldr1 = DirGetSize($FileList[$i], 0)
If Not @error Then
    If Not $sizefldr1  Then
        MsgBox(0,"vide","Dossier vide trouvé" & $FileList[$i])

    Else
        MsgBox(0, "plein", "Dossiers plein trouvés: " & $FileList[$i])
    EndIf
Else
    MsgBox(0, "erreur", "erreur de recherche: " & $FileList[$i])
EndIf
Next
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Lister et supprimer des dossiers vides

#5

Message par orax »

Juste une petite remarque : la solution de walkson est bonne mais tout dépend de ce qu'on entend par dossier "vide". Le code de walkson supprime les dossiers qui ont une taille de 0 octet, mais ces dossiers pourraient quand même contenir des fichiers (de 0 octet) et/ou dossiers.
Si tu veux vérifier que les dossiers sont vraiment vides, il faudra compter le nombre de fichiers/dossiers (comme tu l'avais fait dans ton code).
#include <AutoItConstants.au3>
#include <File.au3>
$FileList = _FileListToArray(@DesktopDir, "*", $FLTA_FOLDERS, True);dossier avec chemin

_ArrayDisplay($FileList, "$FileList")
For $i = 1 To $FileList[0]
   $sizefldr1 = DirGetSize($FileList[$i], $DIR_EXTENDED)
   If Not @error Then
      If Not $sizefldr1[1] And Not $sizefldr1[2] Then
         MsgBox(0, "vide", "Dossier vide trouvé" & $FileList[$i])

      Else
         MsgBox(0, "plein", "Dossiers plein trouvés: " & $FileList[$i])
      EndIf
   Else
      MsgBox(16, "erreur", "Le dossier '" & $FileList[$i] & "' n'existe pas.")
   EndIf
Next
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1037
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Lister et supprimer des dossiers vides

#6

Message par walkson »

Voilà un détail qui m'avait échappé, merci d'avoir rectifié
[Edit] Pour ceux qui ne sont pas encore sous 3.3.14.2(comme moi) => $DIR_EXTENDED = 1
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
jeanmimigab
Niveau 5
Niveau 5
Messages : 123
Enregistré le : sam. 08 oct. 2011 14:01
Status : Hors ligne

Re: [..] Lister et supprimer des dossiers vides

#7

Message par jeanmimigab »

Bonjour à tous(tes),

@Walkson,
Merci beaucoup pour ton aide, je comprend les boulettes que j'ai fait maintenant :mrgreen:
Vu que cela ne marchait pas,, j’étais partis sur une piste complètement différente mais sans succès.

@orax, merci pour les précisions importantes.

Un GRAND MERCI à vous deux, et longue vie à ce super forum !!
Répondre