Ordner durchsuchen

  • Moin,
    wolltet ihr nicht schon immer alle Dateien und / oder Ordner eines Pfades ermitteln? Hiermit könnt ihr das xD
    Wer will, kann auch ein Dateifilter einbauen, aber ich überprüfe das immer nachträglich, und so ist die Funktion richtig schön schnell =)

    Spoiler anzeigen
    [autoit]

    Func ZeigeDateien($pfad, $typ = 0, $maxAnz = 50000) ; typ=0: Dateien, typ=1: Ordner, typ=2: Alles
    If $typ < 2 Then
    Local $ordner[$maxAnz + 1], $i = 1
    If $typ = 0 Then Local $datei[$maxAnz + 1], $k = 1
    $ordner[0] = $pfad
    For $j = 0 To $maxAnz
    $suchhandle = FileFindFirstFile($ordner[$j] & '\*.*')
    $ordner[$j] &= '\'
    Do
    $objekt = FileFindNextFile($suchhandle)
    If @error Then ExitLoop ; Keine Daten mehr vorhanden
    If StringInStr(FileGetAttrib($ordner[$j] & $objekt), 'D', 2) Then ; Ordner
    If Not StringInStr($ordner[$j] & $objekt, $pfad, 2) Then ExitLoop 2
    $ordner[$i] = $ordner[$j] & $objekt
    $i += 1
    ElseIf $typ = 0 Then
    $datei[$k] = $ordner[$j] & $objekt
    $k += 1
    EndIf
    Until False
    $ordner[$j] = StringTrimRight($ordner[$j], 1) ; entfernt '/' am Ende
    FileClose($suchhandle)
    Next
    If $typ = 0 Then
    ReDim $datei[$k]
    $datei[0] = $k - 1
    Return $datei
    Else
    ReDim $ordner[$j]
    $ordner[0] = $j - 1
    Return $ordner
    EndIf
    Else
    Local $a = ZeigeDateien($pfad, 0)
    Local $b = ZeigeDateien($pfad, 1)
    Local $c[UBound($a) + UBound($b)]
    For $i = 0 To UBound($a) - 1
    $c[$i] = $a[$i]
    Next
    ReDim $b[UBound($b) + 1]
    For $i = UBound($a) To UBound($c) - 1
    $c[$i] = $b[$i - UBound($a) + 1]
    Next
    ReDim $c[UBound($c) - 1]
    $c[0] = UBound($c) - 1
    Return $c
    EndIf
    EndFunc

    [/autoit]
    • Offizieller Beitrag

    wolltet ihr nicht schon immer alle Dateien und / oder Ordner eines Pfades ermitteln?


    Haben wir das nicht auch schon getan...? :D
    Rekursive Datei/Ordner Auflistung per Objekt
    _RecursiveFileListToArray (mit StringRegExp)
    ..einen hab ich noch. Schon etwas älter und muß wohl mal wieder auf die aktuelle AutoIt-Version angepaßt werden:
    Dateien / Ordner rekursiv lesen