FileFindNextFile findet nicht alles

  • Hallo Experten,
    ich möchte die Dateien eines Ordners samt allen Unterordnern auslesen.
    FileFindNextFile liest aber nur die Datei- und Ordnernamen des obersten Ordners, die Inhalte der Unterordner nicht:

    FileChangeDir($spfadq)
    Local $hFirFile = FileFindFirstFile("*.*")
    Local $sFilName = ""
    While 1
    $sFilName = FileFindNextFile($hFirFile) ; Liest die Unterordner nicht aus !
    If @error Then ExitLoop
    GUICtrlSetData($liste, $sFilName & @CRLF, 1)
    WEnd

    Weiß jemand eine Lösung für diese Aufgabe? Vielen Dank schon mal!

  • Ja exakt so ist FileFindFirst/NextFile gedacht - es arbeitet immer nur auf einer Baumebene.
    Willst du alles musst du dir aus der Rückgabe die Unterordner rauspicken und dort dann wieder per FileFindFirst/NextFile weiterarbeiten.
    Um das bisschen programmiertechnisch zu generalisieren programmiert man das ganze z.B. rekursiv (geht aber auch anders).
    Im Forum findest du unter dem Stichwort zig Funktionen welche exakt das machen.
    AutoIt selbst bringt aber mittlerweile hierfür eine eigene Funktion namens _FileListToArrayRec() mit.

  • Hallo AspirinJunkie,
    Vielen Dank für die Antwort. Ich habe die Funktion ausprobiert (statt FileFindNextFile), sie bringt zwar brav alle Dateien des obersten Ordners, aber aus keinem einzigen der 6 Unterordner:

    $sFilName = _FileListToArrayRec($spfadq, "*", $FLTAR_FILES, $FLTAR_RECUR, $FLTAR_NOSORT, $FLTAR_FULLPATH)

    Was habe ich falsch gemacht?

  • Anscheinend hast du einen Pfad ausgewählt, in dem die Unterordner leer sind. Das Beispiel aus der Hilfe mit deinen Parametern findet erfolgreich alle Dateien im ...\AutoIt3 Ordner:


    68_Sorted tree.jpg