_FileListToArrayRec - mehrere Erweiterungen

  • Hallo,

    (A) kann ich mit dem Befehl _FileListToArrayRec in einer Zeile nach *.txt und *.doc und ggf. noch weiteren Erweiterungen / Dateien suchen?

    Bisher nutze ich:

    $aArray_1 = _FileListToArrayRec ( $Quellverzeichnis , "*.txt ", $FLTAR_FILES, $FLTAR_RECUR , $FLTAR_SORT )

    $aArray_2 = _FileListToArrayRec ( $Quellverzeichnis , "*.doc ", $FLTAR_FILES, $FLTAR_RECUR , $FLTAR_SORT )

    (B) Was ist der einfachste Weg, um aus 2 Arrays 1 sortiertes Array zu machen, wenn die interne Struktur wie im obigen Beispiel indentisch ist?

    ( also sowas wie $aArray = $aArray_1 + $aArray_2 )

    Ziel: ein Array mit allen *.txt und *.doc Dateien, alphabetisch nach Dateinamen sortiert.

    Danke :)

  • Ein Blick in die Hilfe hätte ausgeholfen: https://www.autoitscript.com/autoit3/docs/l…tToArrayRec.htm

    Multiple filters must be separated by ";" also *.txt;*.doc

    Lottich wieso hast du dafür eigentlich eine UDF gebraucht, mir fällt das grad erst jetzt auf.

    Wenn du nicht explizit regexen willst und nur mehrere Endungen brauchst tuts die Standard-UDF es doch auch.

    rel: Regex "Multipattern" möglich?

    (B) Was ist der einfachste Weg, um aus 2 Arrays 1 sortiertes Array zu machen, wenn die interne Struktur wie im obigen Beispiel indentisch ist?

    Beide zusammenfügen. Entweder manuell oder mit _ArrayAdd. Danach nach belieben _ArraySort verwenden.

    Musst aber aufpassen, dass dann in [0] nicht die Größe enthalten ist, da diese falsch sortiert wird bzw. du danach auch noch zwei Größen hast.

  • Danke – stimmt – ich habe an der falschen Stelle geschaut ( bei den Beispielen und unter Bemerkungen ).

    „Filter für das Ergebnis- Mehrere Filter müssen mit einem ; getrennt werden“

    Das eigentliche Problem besteht noch:

    "Ziel: ein Array mit allen *.txt und *.doc Dateien, alphabetisch nach Dateinamen sortiert."

    Ich gehe durch ein Verzeichnis mit vielen Unterverzeichnissen.

    als Liste erhalte ich zeilenweise Verzeichnisname und Datei als Array - beispielsweise

    Test 1\z.txt

    Test 9 mal an\Unterverzeichnis_x\a.doc

    richtig sortiert nach Dateiname

    Test 9 mal an\Unterverzeichnis_x\a.doc

    Test 1\z.txt

    Wie kann ich das Array so umsortieren, dass es nach dem Dateinamen sortiert ist?

    _FileListToArrayRec erzeugt als Ergebnis Pfade und Dateinamen in jeweils einem Datensatz ( einer Zeile )

    Was wäre der einfachste Weg zur Sortierung nach Dateiname innerhalb des Arrays?

    Oder wird eine Hilfskonstruktion benötigt?

    2 Mal editiert, zuletzt von AutoMit (12. April 2019 um 17:10)

  • Das eigentliche Problem besteht noch :

    "Ziel: ein Array mit allen *.txt und *.doc Dateien, alphabetisch nach Dateinamen sortiert."

    Versuche es mal damit ;) :

    EDIT : erweiterte Info

    Anstelle 2 Arrays zu bilden und zusammenzuführen, mache ich hier folgendes :

    1. das Ergebnisarray aus _FileListToArrayRec wird um eine neue Spalte erweitert

    2. mit StringRegExpReplace den Dateinamensteil des Pfades ermitteln -> in die neue Spalte eintragen

    3. das Array auf der neuen Spalte (also dem Dateinamen) sortieren

    Statt @ScriptDir musst Du natürlich Dein $Quellverzeichnis einsetzen.

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

    Einmal editiert, zuletzt von Musashi (12. April 2019 um 18:48)

  • Lottich wieso hast du dafür eigentlich eine UDF gebraucht, mir fällt das grad erst jetzt auf.

    Wenn du nicht explizit regexen willst und nur mehrere Endungen brauchst tuts die Standard-UDF es doch auch.

    rel: Regex "Multipattern" möglich?

    OMG

    Daran hab ich überhaupt nicht gedacht! Ich hatte die Funktion, die ich aktuell verwende, mal irgendwo gefunden und gespeichert. Die hatte Oscar damals mal für die AutoIt Version 3.3.0.0 geschrieben.

    Hat also schon dein paar Jährchen aufm Buckel. Wenn ich mich nicht an diese Funktion erinnert hätte, hätt ich sicher bei den UDF´s nach was brauchbarem gesucht, wo ich dann auf _FileListToArrayRec()

    gestossen wär. Aber nun ist es, wie es ist. Die Func von Oscar macht noch immer was sie soll und da ich nun weiss, wie ich auch dafür mehrere Matches finden kann, brauch ich mein Script nicht umschreiben. :)