johann91
Messages postés46Date d'inscriptionjeudi 2 décembre 2004StatutMembreDernière intervention21 juillet 2006
-
5 avril 2006 à 16:50
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 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.
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201827 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
fiko81
Messages postés381Date d'inscriptionvendredi 24 septembre 2004StatutMembreDernière intervention 5 septembre 20103 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
fiko81
Messages postés381Date d'inscriptionvendredi 24 septembre 2004StatutMembreDernière intervention 5 septembre 20103 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
johann91
Messages postés46Date d'inscriptionjeudi 2 décembre 2004StatutMembreDernière intervention21 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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201827 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