Вот моя рекурсивная функция, которую я использую для своих сценариев. Вы также можете использовать ее
ПРИМЕЧАНИЕ Вы должны использовать Recurse , NOT RecurseX recursex используется функцией Recurse.
ПРИМЕЧАНИЕ. Если имеется много подкаталогов, то рекурсия может занять некоторое время.
Функция Recurse возвращает ARRAY , содержащий все папки и EVERY подпапку.
например:
Dim I, SubDirectories
SubDirectories=Recurse ("MAIN_DIR")
For I=0 To UBound (SubDirectories)
WScript.Echo SubDirectories (I)
Next
'##########################################
'# #
'# Function #
'# #
'# Recurse Function #
'# by Ronnie Matthews #
'##########################################
'# #
'# This will return an array of all #
'# Folders and subfolders (every levels) #
'# in a directory provided. #
'# #
'##########################################</p>
<pre><code>Function Recurse (dir)
Dim FSO
Set FSO = CreateObject("Scripting.Filesystemobject")
If Not FSO.FolderExists (dir) Then
Recurse=Array (Empty)
Exit Function
End If
Dim RecArr, RecArrID
RecArr=Array (dir)
RecArrID=1
Recurse=RecurseX (dir,RecArr,RecArrID)
RecArr=Empty
RecArrID=Empty
End Function
'DO NOT CALL THIS FUNCTION DIRECTLY. ONLY RECURSE
Function RecurseX (Dir,RecArr,RecArrID)
Dim F,FSO
Set FSO = CreateObject("Scripting.Filesystemobject")
For Each F In FSO.GetFolder (dir).SubFolders
ReDim Preserve RecArr (RecArrID)
RecArr (RecArrID)=F.Path
RecArrID=RecArrID+1
If F.SubFolders.Count>=1 Then
RecurseX=RecurseX (F.Path,RecArr,RecArrID)
End If
Next
RecurseX=RecArr
End Function