- Offizieller Beitrag
Hier mal eine andere Variante zur Rekursiven Dateisuche. Diesmal mit Objekt gelöst.
Konkret: Funktion um eine Datei rekursiv in einem Pfad zu suchen. Rückgabe - der Dateipfad.
Spoiler anzeigen
Dim $Datei = "autoit3.exe"
Dim $Ordner = @ProgramFilesDir
MsgBox(0, '', _RecursiveFileSearch($Datei, $Ordner) )
;--------------------------------------------------------------------------------------------------
; Funktion _RecursiveFileSearch($FILE, $SEARCHFOLDER)
;
; Beschreibung Sucht nach vorgegebener Datei in einem Ordner rekursiv
;
; Parameter $FILE: zu suchende Datei
; $SEARCHFOLDER: Ordner für Suchstart
;
; Rückgabe Erfolg: Pfad der gesuchten Datei
; @error = 0
; Fehler: 1-kein Dateiname / 2-kein Ordnername übergeben (3-beides); 4-Datei nicht vorhanden
; @error = 1
;
; Autor BugFix ([email='bugfix@autoit.de'][/email])
;--------------------------------------------------------------------------------------------------
Func _RecursiveFileSearch($FILE, $SEARCHFOLDER)
Global $PathFound = ""
Dim $Fehler = 0
If $FILE = "" Then
SetError(1)
$Fehler += 1
EndIf
If $SEARCHFOLDER = "" Then
SetError(1)
$Fehler += 2
EndIf
If @error Then Return $Fehler
$FSO = ObjCreate("Scripting.FileSystemObject")
ShowSubfolders( $FSO.GetFolder($SEARCHFOLDER), $FILE )
If $PathFound = "" Then
SetError(1)
$Fehler = 4
Return $Fehler
Else
SetError(0)
EndIf
Return $PathFound
EndFunc
Func ShowSubFolders($Folder, $FILE)
For $Subfolder in $Folder.SubFolders
If FileExists($Subfolder.Path & "\" & $FILE) Then
$PathFound = $Subfolder.Path & "\" & $FILE
ExitLoop
EndIf
ShowSubFolders( $Subfolder, $FILE )
Next
EndFunc
; ==>_RecursiveFileSearch