Code: Select all
Procedure SearchDirectory(dir$, pattern$, List dList.s(), level.l = 0)
Protected eName$
NewList Dirs.s()
If (level = 0)
ClearList(dList())
EndIf
If Right(dir$, 1) <> "\"
dir$ + "\"
EndIf
If ExamineDirectory(0, dir$, "")
While NextDirectoryEntry(0)
If DirectoryEntryType(0) = #PB_DirectoryEntry_Directory
eName$ = DirectoryEntryName(0)
If (eName$ <> ".") And (eName$ <> "..")
AddElement(Dirs())
Dirs() = eName$ + "\"
EndIf
EndIf
Wend
FinishDirectory(0)
If ExamineDirectory(0, dir$, pattern$)
While NextDirectoryEntry(0)
eName$ = DirectoryEntryName(0)
If (eName$ <> ".") And (eName$ <> "..")
AddElement(dList())
dList() = dir$ + eName$
If DirectoryEntryType(0) = #PB_DirectoryEntry_Directory
dList() + "\"
EndIf
EndIf
Wend
FinishDirectory(0)
EndIf
EndIf
If ListSize(Dirs())
ForEach Dirs()
SearchDirectory(dir$ + Dirs(), pattern$, dList(), level + 1)
Next
EndIf
If (level = 0)
ForEach dList()
dList() = Mid(dList(), Len(dir$) + 1, Len(dList()))
Next
SortList(dList(), 2)
EndIf
EndProcedure
NewList FilesAndFolders.s()
SearchDirectory("C:\WINDOWS", "sys*", FilesAndFolders())
Debug "Found " + Str(ListSize(FilesAndFolders())) + " object(s)"
ForEach FilesAndFolders()
Debug FilesAndFolders()
Next
End