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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 29 820 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

tooffy123
Messages postés
55
Date d'inscription
vendredi 16 mai 2003
Statut
Membre
Dernière intervention
16 mars 2009
-
Merfiiiiiiiiiiiiiii !!!
Ca fé biento 2 ans ke jaten cette source !
Seulemen bon ca me préocupé pa + ke ca lol
cs_PROGRAMMIX
Messages postés
1134
Date d'inscription
mercredi 2 octobre 2002
Statut
Membre
Dernière intervention
24 juillet 2011
-
>>> tooffy123
Tu n'as pas dû chercher beaucoup...
Le site regorge de ce genre de source...

IMPRIMER LE CONTENU DE VOS RÉPERTOIRES (+ APERÇU AVANT IMPRESSION) : http://www.vbfrance.com/code.aspx?id=4902

3 MÉTHODES DE RECHERCHE RÉCURSIVE DE FICHIERS : http://www.vbfrance.com/code.aspx?id=5089
andrieuremi
Messages postés
14
Date d'inscription
mercredi 18 juin 2003
Statut
Membre
Dernière intervention
21 juin 2007
-
Moi je trouve ça plutôt intéressant.
cs_nihaoma
Messages postés
140
Date d'inscription
jeudi 2 mai 2002
Statut
Membre
Dernière intervention
2 février 2010
-
c'est plutot un bon code, et au moins y'a pas besoin de mettre 150 dirlist, et autre controle du meme genre....juste une simple remarque, meme si je penses que tout le monde y pensera au bout d'un moment, dans la fonction de recherche, un p'tit 'DoEvents' au debut des 2 boucles For ne fait pas de mal, au contraire, car si comme moi, on lance betement le truc en concervant le chemin sur "C:", on se retrouve avec un machine patinant dans la semoule jusqu'a la fin de la recherche....
sinon, c good...
trpp111
Messages postés
5
Date d'inscription
mercredi 29 juin 2005
Statut
Membre
Dernière intervention
22 janvier 2007
-
Bonjour, j'ai un petit problème lié à ce type de gestion d'objets système : quand j'utilise des chemis de dossier, pas de problème. Par contre, dés que le "dossier" est une lettre de lecteur, comme le "c:" de cette source, le chemin n'est pas reconnu. Y a t'il une déclaration spéciale à faire pour les lettres de lecteurs?

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.