Il existe peut-être déjà des fonctions ou autre à ce sujet, mais voilà la mienne

C'est une fonction récursive ( IUT powa!

Code : Tout sélectionner
Chemin.s = "D:\"
fileToFind.s = "install.tx"
Global nbDossierParcouru.l
nbDossierParcouru = 0
Procedure.s LookForFile(file$,dossier$, numRep.l)
; Fonction récursive de recherche d'un fichier
; file : fichier à rechercher
; dossier : dossier de départ de l'analyse
; numRep : #Repertoire utilisé pour ExamineDirectory()
If Right(dossier$,1)<>"\"
dossier$ = dossier$ + "\"
EndIf
If ExamineDirectory(numRep, dossier$, "*.*")
rep.s = ""
nbDossierParcouru = nbDossierParcouru + 1
Repeat
fileType = NextDirectoryEntry() ; recupération du type du fichier
; analyse sur les dossiers
If fileType = 2
fileName$ = DirectoryEntryName() ; recup du nom du fichier/dossier
If fileName$ <> "." And fileName$<>".."
; ajout à la ListBox
AddGadgetItem(2, -1, "> " + fileName$)
rep$ = LookForFile(file$, dossier$ + fileName$, numRep+1)
; si la récursivité a trouvé le fichier, on sort de la fonction
If rep$ <> "": ProcedureReturn rep$ : EndIf
; numRep redevient le dossier d'examen courant
UseDirectory(numRep)
EndIf
EndIf
; analyse sur les fichiers
If fileType = 1 And DirectoryEntryName() = file$
; si on a trouvé, on sort de la fonction
ProcedureReturn dossier$
EndIf
Until FileType = 0 ; tant que le dossier n'est pas vide
EndIf
ProcedureReturn ""
EndProcedure
If OpenWindow(0, 100, 200, 340, 340, #PB_Window_SystemMenu, "PureBasic - FileSystem Example")
If CreateGadgetList(WindowID())
StringGadget (0, 10, 10, 202, 24, "")
SetGadgetText (0, Chemin)
ButtonGadget (1, 220, 10, 60 , 24, "Start")
ListViewGadget(2, 10, 70, 320, 250)
StringGadget (3, 10, 40, 202, 24, "")
SetGadgetText (3, fileToFind)
EndIf
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_EventGadget
; appuie sur le boutton
If EventGadgetID() = 1
ClearGadgetItemList(2)
; appel de la fonction pour trouver le fichier
result.s = LookForFile(GetGadgetText(3), GetGadgetText(0),0)
; message en fonction des résultats
If result <> ""
msg.s = fileToFind+" a été trouvé dans le dossier :"+ Chr(13)+Chr(10)+result
Else
msg.s = "Impossible de trouver "+fileToFind
EndIf
MessageRequester("Search in "+Str(nbDossierParcouru)+" folders", msg, #PB_MessageRequester_Ok)
EndIf
EndIf
Until EventID = #PB_EventCloseWindow
EndIf
End