- Offizieller Beitrag
Auf besonderen Wunsch von Oscar poste ich hier mal meine Funktion zum rekursiven Suchen von Datein und/oder Odnern.
Spoiler anzeigen
;===============================================================================
; Name: FileListRecursive
; Description: Sucht rekursiv nach Dateien und Ordnern
; Parameter(s): $szStartPath = Path ab dem gesucht werden soll
; $szFileName = Datei nach der gesucht werden soll
; $iFlag (optional) = Gibt an was zurückgegeben werden soll
; 0 = Dateien und Ordner (default)
; 1 = nur Dateien
; 2 = nur Ordner (ignoriert $szFileName)
; $iRetFormat (optional) = Rückgabeformat
; 0 = als String (default)
; 1 = als Array
; $szDelim (optional) = Trennzeichen wenn $iRetFormat = 0 (@CRLF ist default)
; Requirement(s): keine
; Return Value(s): bei Erfolg: Ergebnis als String oder Array
; bei Fehler:
; Author(s): bernd670
;
;===============================================================================
Func FileListRecursive($szStartPath, $szFileName, $iFlag = 0, $iRetFormat = 0, $szDelim = @CRLF)
Local $hFF, $szFindName, $szRetValue = ""
If $iFlag = Default Then $iFlag = 0
If $iRetFormat = Default Then $iRetFormat = 0
If $szDelim = Default Then $szDelim = @CRLF
If StringRight($szStartPath, 1) <> "\" Then $szStartPath &= "\"
[/autoit] [autoit][/autoit] [autoit]If $iFlag < 2 Then
$hFF = FileFindFirstFile($szStartPath & $szFileName)
If $hFF <> -1 Then
While True
$szFindName = FileFindNextFile($hFF)
If @error Then
FileClose($hFF)
ExitLoop
EndIf
If ($szRetValue <> "") And (StringRight($szRetValue, StringLen($szDelim)) <> $szDelim) Then $szRetValue &= $szDelim
$szRetValue &= $szStartPath & $szFindName
WEnd
EndIf
EndIf
$hFF = FileFindFirstFile($szStartPath & "*.*")
If $hFF = -1 Then Return $szRetValue
[/autoit] [autoit][/autoit] [autoit]While True
$szFindName = FileFindNextFile($hFF)
If @error Then
FileClose($hFF)
ExitLoop
EndIf
If StringInStr(FileGetAttrib($szStartPath & $szFindName), "d") Then
If ($szRetValue <> "") And (StringRight($szRetValue, StringLen($szDelim)) <> $szDelim) Then $szRetValue &= $szDelim
If ($iFlag = 0) Or ($iFlag = 2) Then $szRetValue &= $szStartPath & $szFindName & "\" & $szDelim
$szRetValue &= FileListRecursive($szStartPath & $szFindName & "\", $szFileName, $iFlag, 0, $szDelim)
EndIf
WEnd
If StringRight($szRetValue, StringLen($szDelim)) = $szDelim Then $szRetValue = StringTrimRight($szRetValue, StringLen($szDelim))
If $iRetFormat = 0 Then
Return $szRetValue
Else
Return StringSplit($szRetValue, $szDelim, 1)
EndIf
EndFunc ;==>FileListRecursive