le "*" de ExamineDirectory() étant parfois un peu léger.
Voilà si vous avez des idées pour améliorer ce code n’hésitez pas. Et comme d'habitude vous pouvez l'utiliser et le modifier comme bon vous semble.
Code : Tout sélectionner
;####################
;# getFilesList #
;####################
;add to a string list all files/folders who match the name Schema
;*files.s() : pointer to a string list
;path : path where search name schema
;NameSchema : use pcre reg to define Schema name. ex:^fanArt-[0-9]*(\.jpg|\.png)
;entryType : choose files(#getFilesType_Files) or folder(#getFilesType_Folders) or files and folders (#getFilesType_Files|#getFilesType_Folders)
#getFilesType_Folders=1
#getFilesType_Files=2
Procedure getFilesList(List *files.s(),path.s,NameSchema.s,entryType.b=#getFilesType_Files)
If CreateRegularExpression(0, NameSchema.s)
If ExamineDirectory(0, path, "*.*")
While NextDirectoryEntry(0)
If (DirectoryEntryType(0) = #PB_DirectoryEntry_File And (entryType & #getFilesType_Files)) Or (DirectoryEntryType(0) = #PB_DirectoryEntry_Directory And (entryType & #getFilesType_Folders))
If MatchRegularExpression(0, DirectoryEntryName(0))
AddElement(*files())
*files()=path+"\"+DirectoryEntryName(0)
Debug *files()
EndIf
EndIf
Wend
FinishDirectory(0)
EndIf
FreeRegularExpression(0)
Else
Debug RegularExpressionError()
EndIf
EndProcedure
NewList files.s()
getFilesList(@files(),"C:\windows","^w.*\.exe",#getFilesType_Files|#getFilesType_Folders)