;
; ------------------------------------------------------------
;
; PureBasic - Recursive File Search example file
;
; (c) Fantaisie Software
;
; ------------------------------------------------------------
;
Procedure FileSearch(List Files.s(), dir.s, mask.s = "")
Protected name.s, id
If Right(dir, 1) <> #PS$
dir + #PS$
EndIf
id = ExamineDirectory(#PB_Any, dir, "")
If id
While NextDirectoryEntry(id)
name = DirectoryEntryName(id)
If name = "." Or name = ".."
Continue
EndIf
If DirectoryEntryType(id) = #PB_DirectoryEntry_Directory ; if the path is a folder
FileSearch(Files(), dir + name + #PS$, mask) ; recursive call to subfolder
ElseIf (Not Asc(mask) Or GetExtensionPart(name) = mask) And AddElement(Files())
Files() = dir + DirectoryEntryName(id)
EndIf
Wend
FinishDirectory(id)
EndIf
EndProcedure
Define NewList Files.s()
FileSearch(Files(), GetTemporaryDirectory(), "txt") ; empty string to find all files
ForEach Files()
Debug Files()
Next