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
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
"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)
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