axlemush
Messages postés2Date d'inscriptionsamedi 15 août 2009StatutMembreDernière intervention19 février 2010
-
18 févr. 2010 à 15:01
axlemush
Messages postés2Date d'inscriptionsamedi 15 août 2009StatutMembreDernière intervention19 février 2010
-
19 févr. 2010 à 12:12
Bonjours, j'éssaye de créer une applicationn en VBScript qui liste les fichiers et dossiers/sous-dossiers/ect ... d'un répertoire.
Mais mon script bug, et je sais pas d'ou vient ce bug, pourriez-vous m'aider ?
Voici mon script :
Dim stRep1, stRep2
Dim oFSO0,oFld0,oFSO1,oFld1,oFSO2,oFld2
Dim oFl1, oFl2
Set oFSO0 = CreateObject("Scripting.FileSystemObject")
stRep0 = "J:\Essais" & ""
If oFSO0.FolderExists(stRep0) Then
For each oFld0 in oFSO0.GetFolder(stRep0).SubFolders
Wscript.Echo oFld0.Name
recherche1 (stRep0 & oFld0.Name)
Next
End If
sub recherche1(ByVal n1)
Set oFSO1 = CreateObject("Scripting.FileSystemObject")
stRep1 = n1 & ""
If oFSO1.FolderExists(stRep1) Then
For each oFld1 in oFSO1.GetFolder(stRep1).SubFolders
Wscript.Echo oFld1.Name
recherche2 (stRep1 & oFld1.Name)
Next
For each oFl1 in oFSO1.GetFolder(stRep1).Files
Wscript.Echo oFl1.Name
Next
else
Wscript.Echo "Le répertoire" & stRep1 & "n'existe pas !"
End If
End sub
sub recherche2(ByVal n2)
Set oFSO2 = CreateObject("Scripting.FileSystemObject")
stRep2 = n2 & ""
If oFSO2.FolderExists(stRep2) Then
For each oFld2 in oFSO2.GetFolder(stRep2).SubFolders
Wscript.Echo oFld2.Name
recherche1 (stRep2 & oFld2.Name)
Next
For each oFl2 in oFSO2.GetFolder(stRep2).Files
Wscript.Echo oFl2.Name
Next
else
Wscript.Echo "Le répertoire" & stRep2 & "n'existe pas !"
End If
End sub
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201826 18 févr. 2010 à 21:07
re,
Pour lister fichiers + sous-répertoire(s) dès le 1er niveau:
Option Explicit
Dim objFso, RootFolder
Dim RootPath
RootPath = "C:\TEMP"
Set objFso = CreateObject("Scripting.FileSystemObject")
Set RootFolder = objFso.GetFolder(RootPath)
Call SearchFolders(RootFolder)
Set objFso = Nothing
Set RootFolder = Nothing
WScript.Quit
'##############################################
Sub SearchFolders(ArgFolder)
On Error Resume Next 'permission sur folder/file
Dim file, subfolder
For Each file In ArgFolder.Files
Wscript.Echo file
Next
For Each subfolder In ArgFolder.SubFolders
Wscript.Echo subfolder
Call SearchFolders(subfolder)
Next
End Sub
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 18 févr. 2010 à 15:50
Salut
"je sais pas d'ou vient ce bug" et démerdez-vous !
S'il bugue, il faudrait peut-être nous dire ce qu'il est sensé voir et qu'il ne voit pas !
Erreur ? Laquelle ?
En faisant une simple recherche de "vbs lister fichiers répertoire" sur le site, on tombe sur <cet exemple VBA> que tu sauras décortiquer pour le transcrire très facilement en VBS.
Il faut rendre ta fonction récursive afin qu'elle s'appelle elle-même pour parcourir tous les sous-répertoires.
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201826 18 févr. 2010 à 20:25
Bonsoir,
Le bug vient d'une mauvaise gestion des folders et subfolders.
Option Explicit
Dim objFso, RootFolder
Dim RootPath, idx
idx = 0
RootPath = "C:\TEMP"
Set objFso = CreateObject("Scripting.FileSystemObject")
Set RootFolder = objFso.GetFolder(RootPath)
Call SearchFolders(RootFolder, idx)
Set objFso = Nothing
Set RootFolder = Nothing
WScript.Quit
'##############################################
Sub SearchFolders(ArgFolder, idx)
Dim file, subfolder
If idx <> 0 Then
For Each file In ArgFolder.Files
Wscript.Echo file
Next
End If
For Each subfolder In ArgFolder.SubFolders
idx = idx + 1
Wscript.Echo subfolder
Call SearchFolders(subfolder, idx)
Next
End Sub