Taille d'un répertoire

5/5 (6 avis)

Snippet vu 7 770 fois - Téléchargée 38 fois

Contenu du snippet

Fonction récursive en vb6 permettant de connaitre la taille d'un répertoire (avec les sous-répertoires).

Source / Exemple :


Function Taille_Repertoire(Nom_Repertoire As String) As Double
    
    Dim Nom_Fichier As String
    Dim Nombre_Repertoire As Long
    Dim Taille_Fichier As Double
    Dim Libelle_Repertoire(100) As String 'On peut mettre plus ....
    Dim I As Long
        
    'Déclaration des variables
    Nombre_Repertoire = 0
    Taille_Fichier = 0
       
    'Recherche les informations du répertoire concernées différents répertoire
    Nom_Fichier = Dir(Nom_Repertoire & "\")
    Do While Nom_Fichier <> ""
        If GetAttr(Nom_Repertoire & "\" & Nom_Fichier) <> vbDirectory Then
            Taille_Fichier = Taille_Fichier + FileLen(Nom_Repertoire & "\" & Nom_Fichier)
        Else
            If GetAttr(Nom_Repertoire & "\" & Nom_Fichier) = vbDirectory And Nom_Repertoire <> "." And Nom_Repertoire <> ".." Then
                Nombre_Repertoire = Nombre_Repertoire + 1
                Libelle_Repertoire(Nombre_Repertoire) = Nom_Repertoire & "\" & Nom_Fichier
            End If
        End If
        Nom_Fichier = Dir
    Loop
    
    Nom_Fichier = Dir(Nom_Repertoire & "\*.", vbDirectory)
    Do While Nom_Fichier <> ""
        If GetAttr(Nom_Repertoire & "\" & Nom_Fichier) = vbDirectory And Nom_Fichier <> "." And Nom_Fichier <> ".." Then
            Nombre_Repertoire = Nombre_Repertoire + 1
            Libelle_Repertoire(Nombre_Repertoire) = Nom_Repertoire & "\" & Nom_Fichier
        End If
        Nom_Fichier = Dir
    Loop
      
    'Recherche les informations des sous-répertoires
    For I = 1 To Nombre_Repertoire
        Taille_Fichier = Taille_Fichier + Taille_Repertoire(Libelle_Repertoire(I))
    Next I
    
    Taille_Repertoire = Taille_Fichier
    
End Function

A voir également

Ajouter un commentaire Commentaires
plico223 Messages postés 3 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 4 août 2003
4 août 2003 à 10:19
Ouups , il vaut mieux
result = GetAttr(Nom_Repertoire & "" & Nom_Fichier) And vbDirectory
If result = vbDirectory
plico223 Messages postés 3 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 4 août 2003
4 août 2003 à 10:13
Il faut utiliser un test combiné pour l'attribut Directory sinon tu perds une bonne partie des répertoires.
à la place de :
If GetAttr(Nom_Repertoire & "" & Nom_Fichier) = vbDirectory
Il faut
result = GetAttr(Nom_Repertoire & "" & Nom_Fichier) And vbDirectory
If result <> 0 ...
plico223 Messages postés 3 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 4 août 2003
1 août 2003 à 17:21
Peut être mais le FilesytemObject est limité parce que si tu rencontre un droit "funky" dans un sous rep , le ".size" retourne une erreur !
Neo.balastik Messages postés 796 Date d'inscription jeudi 17 mai 2001 Statut Membre Dernière intervention 5 mai 2009 7
17 juil. 2003 à 16:33
Pour pdl ;O)

En effet c'est court, mais pour accéder à FileSystemObject, il faut absolument que le PC possède IE4 minimum. Tu me diras que c'est pour la plupart des PC le cas.... ;-)

J'avais posté une source ici à l'époque (16/05/2002) que traitait 2 méthodes (récursivité et FSO) pour connaître la taille d'un répertoire: http://www.vbfrance.com/article.aspx?ID=4246

Bonne prog'
cs_pdl Messages postés 134 Date d'inscription mardi 20 novembre 2001 Statut Membre Dernière intervention 16 juin 2008
5 juin 2003 à 08:14
En plus court, tu peux faire

Function ShowFolderSize(filespec)
Dim fso, f, s
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFolder(filespec)
s = UCase(f.Name) & " uses " & f.size & " bytes."
ShowFolderSize = s
End Function
Afficher les 6 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.