Lister des sous-répertoires

Résolu
johann91 Messages postés 46 Date d'inscription jeudi 2 décembre 2004 Statut Membre Dernière intervention 21 juillet 2006 - 5 avril 2006 à 16:50
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 - 7 avril 2006 à 07:08
Bonjour, je suis débutant en vbs, et je souhaiterais lister et récupérer les sous répertoires d'un répertoire donné.

J'ai un répertoire C:\blabla\toctoc, dans lequel sont présents d'autres répertoires appelés ResXX avec XX entre 00 et 99. Je souhaiterais récupérer la liste de tous ces répertoires ResXX de façon simple.

Malheureusement, j'ai eu beau chercher sur google et sur plusieurs sites de développement, je n'ai pas trouvé de solution adaptée en VBS.

Comme j'ai posté une question tout-à l'heure et que j'ai eu une réponse impeccable très rapidement, je retente ma chance ici.

Merci d'avance de vos réponses.

6 réponses

cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
5 avril 2006 à 21:35
Bonsoir,

Script vbs qui n'est pas de moi.
Il crée un fichier .txt sur le bureau avec toute l'arborescence.

Dim ShellO: Set ShellO = CreateObject("WScript.Shell")
Dim FSO: Set FSO = CreateObject("Scripting.FileSystemObject")
Dim SListe: Dim Schemin
'Dossier à traiter
Schemin = "d:" '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

'============================
jean-marc
3
fiko81 Messages postés 381 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 5 septembre 2010 3
5 avril 2006 à 17:04
Voici un exemple pour charger dans une combo la liste des sous-rep :
dim strDirectory as string
dim strSousDirectory as string

Combo.Clear
strDirectory ="C:\blabla\toctoc"
strSousDirectory = DirstrDirectory ,vbDirectory)
Do While strSousDirectory <> ""
If strSousDirectory <> "." And strSousDirectory <> ".." Then
If (GetAttr(strDirectory & strSousDirectory ) And vbDirectory) = vbDirectory Then
Combo.AddItem strSousDirectory
End If
End If
strSousDirectory = Dir
Loop

End Sub

Voilà si ça répond à ta question

Fiko ;-)
0
fiko81 Messages postés 381 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 5 septembre 2010 3
5 avril 2006 à 17:05
ERRATUM :

Voici un exemple pour charger dans une combo la liste des sous-rep :

dim strDirectory as string
dim strSousDirectory as string

Combo.Clear
strDirectory ="C:\blabla\toctoc"
strSousDirectory = Dir(strDirectory ,vbDirectory)
Do While strSousDirectory <> ""
If strSousDirectory <> "." And strSousDirectory <> ".." Then
If (GetAttr(strDirectory & strSousDirectory ) And vbDirectory) = vbDirectory Then
Combo.AddItem strSousDirectory
End If
End If
strSousDirectory = Dir
Loop

End Sub

Voilà si ça répond à ta question

Fiko ;-)
0
johann91 Messages postés 46 Date d'inscription jeudi 2 décembre 2004 Statut Membre Dernière intervention 21 juillet 2006
6 avril 2006 à 09:21
Merci beaucoup pour vos réponses.

Fiko81, je crois que ta source est en VB et non en VBS, et novice que je suis, je n'ai pas réussi à la convertir en VBS... JMO, ta fonction ne fait pas exactement ce que je veux, mais comme elle est bien en VBS, je l'ai modifiée pour qu'elle ne liste que les sous-répertoires immédiats du dossier et qu'elle retourne cette valeur sous forme de string (je n'ai toujours pas compris comment on retourne directement un tableau...), et j'ai pile poil la fonction que je voulais.

Encore merci, je suis impressionné par la rapidité et la qualité des réponses que j'ai reçues sur ce forum.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
6 avril 2006 à 18:36
Bonjour,

johann91

Si réponse satisfaisante à la question, ne pas oublier de valider <<Réponse Acceptée>>.
D'autres personnes pourront s'en inspirer

jean-marc

Je vais regarder dans mon répertoire scripts-vbs, j'ai surement d'autres exemples similaires
à la question "fichiers dans Folder et SubFolder".

.
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
7 avril 2006 à 07:08
Bonjour ,

Dim Path, Fso, WshShell
Dim Dossier, Fichiers, Fichier, Fic, Ficbis, SousFichier
Dim strListe
Path = "d:\test"


Set WshShell = WScript.CreateObject("WScript.Shell")
Set Fso = CreateObject("Scripting.FileSystemObject")


Set Dossier = Fso.GetFolder(Path)
Set Fichiers = Dossier.Files


For Each Fichier in Dossier.Files
Set Fic = Fso.GetFile(Fichier)
strListe1 = strListe1 & vbcrlf & Fichier
Next
strListe1 = strListe1 &vbCrLf1&vbCrLf
For Each Fichier in Fso.GetFolder(dossier).SubFolders
Set Ficbis = Fichier.Files
For Each SousFichier in Ficbis
strListe1 = strListe1 & vbcrlf & SousFichier
Next
Next
Result = WshShell.Popup(strListe1, 30, "Liste des Fichiers -- " & Now )
Set Fso = Nothing
Set WshShell = Nothing
0
Rejoignez-nous