Lister l'arborescence d'un répertoire (sous-dossier,fichiers)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 30 737 fois - Téléchargée 34 fois

Contenu du snippet

Cette source liste tous les sous-dossiers et les fichiers d'un répertoire et liste le contenu des sous-dossiers, ainsi de suite... dans un fichier texte créer sur le bureau.

Le code est fonctionnel sous win XP, je ne l'ai pas tester sur d'autre.
Prêt à être utilisé en Vbscript, VBA ...

Le code est documenté et je vous laisse découvrir les possibilités de se traitement.

Il existe déjà en exemple avec la commande Dir, mais ne fonctionne pas sous vbscript.

Source / Exemple :


Dim ShellO: Set ShellO = CreateObject("WScript.Shell")
Dim FSO: Set FSO = CreateObject("Scripting.FileSystemObject")
Dim SListe: Dim Schemin
'Dossier à traiter
    Schemin = "C:\" 'Dossier à modifier
'Dossier Bureau de windows + "\"
    SListe = ShellO.SpecialFolders("Desktop")
    If Right(SListe, 1) <> "\" Then SListe = SListe & "\"
'Ouverture du fichier contenant l'arborescence du répertoire à traiter vers le Bureau
    Dim Fichier: Set Fichier = FSO.CreateTextFile(SListe & "Liste.txt", 1, True)
'Écrire la premiere ligne de la liste
        Fichier.WriteLine (Schemin)
'Lister l'arborescence du dossier
        ListerDossier Schemin, Fichier
'Fermeture du fichier contenant l'arborescence du répertoire à traiter
    Fichier.Close

Function ListerDossier(Schemin, Fichier) 'Lister l'arborescence du dossier
On Error Resume Next
Dim FSO: Set FSO = CreateObject("Scripting.FileSystemObject")
Dim ObjRep: Set ObjRep = FSO.GetFolder(Schemin) 'dossier
Dim ObjSubRep: Set ObjSubRep = ObjRep.SubFolders 'sous-dossiers
Dim ObjSubRepItem
    For Each ObjSubRepItem In ObjSubRep 'Traiter chaque sous-dossiers
        Fichier.WriteLine (ObjSubRepItem.Path) 'Ecrire le path dans la liste
        ListerDossier ObjSubRepItem.Path, Fichier 'traiter les sous-dossiers
    Next
    Dim ObjRepFind: Set ObjRepFind = FSO.GetFolder(Schemin) 'dossier
    Dim ObjSubFile: Set ObjSubFile = ObjRepFind.Files 'Fichiers
    Dim ObjSubFileItem
    For Each ObjSubFileItem In ObjSubFile 'Traiter chaque fichier du répertoire
        Fichier.WriteLine ObjSubFileItem.Path 'Ecrire le path dans la liste
    Next
End Function

A voir également

Ajouter un commentaire

Commentaires

Messages postés
59
Date d'inscription
lundi 12 février 2007
Statut
Membre
Dernière intervention
9 décembre 2009

Bonne source merci.
Messages postés
1133
Date d'inscription
mercredi 2 octobre 2002
Statut
Membre
Dernière intervention
24 juillet 2011
1
Regarde les autres sources sur le sujet (dont celles que j'ai mises en référence dans mon message du 02/10/2004).

Clementio a également mis récemment une source sur ce thème : http://www.vbfrance.com/code.aspx?ID=33103.
Messages postés
5
Date d'inscription
mercredi 29 juin 2005
Statut
Membre
Dernière intervention
22 janvier 2007

Merci les gars, je devrais pouvoir me débrouiller avec ça. J'essayais de traiter de la même manière une arborescence depuis un répertoire classique et depuis un disque local mais je vais passer par un DIR. J'essaye findnextfile BruNews. Merci.
Je posterai un module regroupant tout ça au cas où quelqu'un se pose les mêmes questions.
Messages postés
140
Date d'inscription
jeudi 2 mai 2002
Statut
Membre
Dernière intervention
2 février 2010

sans utiliser un DIR() ca risque de ne pas etre évident...éventuelement tu peux utiliser les API windows (ce qui reviendrait à faire ce que fait la commande DIR, mais en passant directement sur des call de la user32 et du kernel32) mais à part ca je vois pas....
mais je ne comprends pas trop ton problème en fait, pourquoi l'utilisation d'un DIR n'est pas possible ? de toutes facons, si tu veux copier les fichiers, ca veux dire qu'ils existent physiquement sur le disque, donc qu'ils appartienent à un lecteur, donc que tu peux utiliser un DIR pour y accéder non ?
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
20
Hors VBS qui ne peut pas utiliser direct les APIs, c'est FindFirstFile et FindNextFile en récurrence pour parcourir une arborescence, imbattable niveau vitesse.
Doit surement y avoir des exemples en source sur ce site.
Afficher les 12 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.