Taille d'un répertoire

Soyez le premier à donner votre avis sur cette source.

Snippet vu 7 367 fois - Téléchargée 36 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

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

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

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
797
Date d'inscription
jeudi 17 mai 2001
Statut
Membre
Dernière intervention
5 mai 2009
4
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

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.