Code: Select all
Procedure.l SearchDirectory(dir$, List yourLinkedList.s(), pattern$="", recursive=1)
Static level.l=-1
If Not Right(dir$, 1) = "\"
dir$+"\"
EndIf
Protected dir.l=ExamineDirectory(#PB_Any, dir$, pattern$)
If dir
While NextDirectoryEntry(dir)
If DirectoryEntryName(dir) <> "." And DirectoryEntryName(dir) <> ".."
AddElement(yourLinkedList())
For n=CountString(dir$, "\")-level To CountString(dir$, "\")
yourLinkedList()+StringField(dir$, n, "\")+"\"
Next
yourLinkedList()+DirectoryEntryName(dir)
If DirectoryEntryType(dir) = #PB_DirectoryEntry_Directory
yourLinkedList()+"\"
EndIf
EndIf
Wend
FinishDirectory(dir)
EndIf
Protected all.l=ExamineDirectory(#PB_Any, dir$, "")
If all
While NextDirectoryEntry(all)
If DirectoryEntryType(all) = #PB_DirectoryEntry_Directory And DirectoryEntryName(all) <> "." And DirectoryEntryName(all) <> ".."
level+1
SearchDirectory(dir$+DirectoryEntryName(all)+"\", yourLinkedList(), pattern$, recursive)
level-1
EndIf
Wend
FinishDirectory(all)
EndIf
ProcedureReturn ListSize(yourLinkedList())
EndProcedure ; 34 lines by AND51
NewList FilesAndFolders.s()
found = SearchDirectory("C:\WINDOWS", FilesAndFolders(), "sys*", 1)
ForEach FilesAndFolders()
Debug FilesAndFolders()
Next
Debug found