Funktionreferenz


_FileListToArrayRec

Beschreibung anzeigen in

Listet Dateien und/oder Ordner im angegebenen Pfad mit optionaler Rekursion um das Level festzulegen und einer Ergebnissortierung mit der Möglichkeit, eine Platzhalterauswahl zu verwenden (Dateiplatzhalter).

#include <File.au3>
_FileListToArrayRec ( $sFilePath [, $sMask = "*" [, $iReturn = $FLTAR_FILESFOLDERS [, $iRecur = $FLTAR_NORECUR [, $iSort = $FLTAR_NOSORT [, $iReturnPath = $FLTAR_RELPATH]]]]] )

Parameter

$sFilePath Anfangspfad der genutzt wird um die Dateiliste zu generieren
Wenn der Pfad mit \ endet, dann werden Ordner mit einem abschließenden \ zurückgegeben
Wenn die Pfadlänge > 260 Zeichen, vor dem Pfad ein "\\?\" schreiben - zurückgegebene Pfade sind nicht beeinflusst
$sMask [optional] Filter für das Ergebnis- Mehrere Filter müssen mit einem ; getrennt werden
Verwendet "|" um 3 mögliche Gruppen von Filtern zu trennen: "Include|Exclude|Exclude_Folders"
    Include = Dateien/Ordner die einbezogen werden sollen (Standard = "*" [alle])
    Exclude = Dateien/Ordner die ausgeschlossen werden sollen (Standard = "" [keine])
    Exclude_Folders = nur genutzt wenn $iRecur = 1 UND $iReturn <> 2 um angegebene Ordner auszuschließen (Standard = "" [keine])
$iReturn [optional] Gibt an ob Dateien, Ordner oder beides zurückgegeben werden soll und ob welche mit bestimmten Attributen ausgelassen werden sollen
    $FLTAR_FILESFOLDERS (0) - (Standard) Gibt Dateien und Ordner zurück
    $FLTAR_FILES (1) - Gibt nur Dateien zurück
    $FLTAR_FOLDERS (2) - Gibt nur Ordner zurück
Fügt eines oder mehrere der Folgenden zu $iReturn hinzu, um Dateien/Ordner mit diesen Attributen auszuschließen
    + $FLTAR_NOHIDDEN (4) - Versteckte Dateien und Ordner
    + $FLTAR_NOSYSTEM (8) - Systemdateien und Ordner
    + $FLTAR_NOLINK (16) - symbolische Links (Link) oder Verzeichnisverknüpfungen (junction)
$iRecur [optional] Gibt an ob rekursiv in Unterordner gesucht werden soll und bis zu welchem Level
    $FLTAR_NORECUR (0) - Nicht in Unterordnern suchen (Standard)
    $FLTAR_RECUR (1) - Suche in allen Unterordnern (unbegrenzte Rekursion)
Negative Zahl - Suche in Unterordnern bis zur angegebenen Tiefe
$iSort [optional] Sortiert das Ergebnis in Alphabetischer- und Tiefen-Reihenfolge
    $FLTAR_NOSORT (0) - Keine Sortierung (Standard)
    $FLTAR_SORT (1) - Sortiert
    $FLTAR_FASTSORT (2) - Sortiert mit schnellerem Algorithmus (Nimmt an, dass Dateien in Ordnern sortiert zurückgegeben werden - benötigt NTFS und garantiert nichts)
$iReturnPath [optional] Gibt das aussehen der Ergebnispfade an
    $FLTAR_NOPATH (0) - nur Datei/Ordner Name
    $FLTAR_RELPATH (1) - relativ zum Anfangspfad (Standard)
    $FLTAR_FULLPATH (2) - der gesamte Pfad

Rückgabewert

Erfolg: ein 1D-Array mit folgendem Aufbau:
    [0] = Anzahl zurückgegebener Dateien/Ordner
    [1] = 1te Datei/Ordner
    [2] = 2te Datei/Ordner
    ...
    [n] = n-te Datei/Ordner
Fehler: ein leerer String und setzt @error auf 1 mit @extended gesetzt wie folgt:
    1 - Pfad nicht gefunden oder fehlerhaft
    2 - Fehlerhafter Include Parameter
    3 - Fehlerhafter Exclude Parameter
    4 - Fehlerhafter Exclude_Folders Parameter
    5 - Fehlerhafter $iReturn Parameter
    6 - Fehlerhafter $iRecur Parameter
    7 - Fehlerhafter $iSort Parameter
    8 - Fehlerhafter $iReturnPath Parameter
    9 - Keine Dateien/Ordner gefunden

Bemerkungen

Wenn die Dateien und/oder Ordner die zurückgegeben werden sollen alle in dem selben Ordner sind und mit einem einfachen Filter beschrieben werden können, könnte die _FileListToArray() Funktion eine bessere Wahl sein, da diese wesentlich schneller ist.

Include/Exclude/Exclude_Folders Logik:
    Nicht-Rekursiv:
        Include/Exclude: Dateien und/oder Ordner
        Exclude_Folders: Ignoriert
    Rekursiv:
        Include/Exclude:
            $iReturn = $FLTAR_FILESFOLDERS/$FLTAR_FILES - nur Dateien
            $iReturn = $FLTAR_FOLDERS - nur Ordner
        Exclude_Folders:
            $iReturn = $FLTAR_FILESFOLDERS/$FLTAR_FILES - nur Ordner
            $iReturn = $FLTAR_FOLDERS - Ignoriert

Das Ergebnis zu sortieren wird die benötigte Zeit der UDF, um das Array zurückzugeben, deutlich steigern.

Trotz des Namens ist diese UDF iterativ, nicht rekursiv. Die Konstanten sind in der FileConstants.au3 definiert

Verwandte Funktionen

_FileListToArray

Beispiel

#include <Array.au3>
#include <File.au3>
#include <MsgBoxConstants.au3>

Example()

Func Example()
    Local $sAutoItDir = StringLeft(@AutoItExe, StringInStr(@AutoItExe, "\", Default, -1))
    If StringRight($sAutoItDir, 5) = "beta\" Then
        $sAutoItDir = StringTrimRight($sAutoItDir, 5)
    EndIf
    ConsoleWrite($sAutoItDir & @CRLF)

    ; A sorted list of all files and folders in the AutoIt installation
    Local $aArray = _FileListToArrayRec($sAutoItDir, "*", $FLTAR_FILESFOLDERS, $FLTAR_RECUR, $FLTAR_SORT)
    _ArrayDisplay($aArray, "Sorted tree")

    ; And now ignoring the "Include" folder
    $aArray = _FileListToArrayRec($sAutoItDir, "*||include", $FLTAR_FILESFOLDERS, $FLTAR_RECUR, $FLTAR_SORT)
    _ArrayDisplay($aArray, "No 'Include' folder")

    ; A sorted list of all but the .exe files in the \AutoIt3 folder
    $aArray = _FileListToArrayRec($sAutoItDir, "*|*.exe", $FLTAR_FILES, $FLTAR_NORECUR, $FLTAR_SORT)
    _ArrayDisplay($aArray, "Non .EXE files")

    ; And here are the .exe files we left out last time
    $aArray = _FileListToArrayRec($sAutoItDir, "*.exe", $FLTAR_FILES)
    _ArrayDisplay($aArray, ".EXE Files")

    ; A test for all folders and .exe files only throughout the folder tree, omitting folders beginning with I (Icons and Include)
    $aArray = _FileListToArrayRec($sAutoItDir, "*.exe||i*", $FLTAR_FILESFOLDERS, $FLTAR_RECUR, $FLTAR_SORT)
    _ArrayDisplay($aArray, "Recur with filter")

    ; Look for icon files - but exlude the "Icons" folder
    $aArray = _FileListToArrayRec($sAutoItDir, "*.ico||ic*", $FLTAR_FILES, $FLTAR_RECUR, $FLTAR_SORT)
    If @error Then
        MsgBox($MB_SYSTEMMODAL, "Ooops!", "No ico files found")
    Else
        _ArrayDisplay($aArray, "Icon files not in 'Icons' folder")
    EndIf

    ; And to show that the filter applies to files AND folders when not recursive
    $aArray = _FileListToArrayRec($sAutoItDir, "*.exe", $FLTAR_FILESFOLDERS, $FLTAR_NORECUR, $FLTAR_SORT)
    _ArrayDisplay($aArray, "Non-recur with filter")

    ; The filter also applies to folders when recursively searching for folders
    $aArray = _FileListToArrayRec($sAutoItDir, "Icons", $FLTAR_FOLDERS, $FLTAR_RECUR, $FLTAR_SORT)
    _ArrayDisplay($aArray, "Folder recur with filter")

    ; Note the exlude_folder parameter is ignored when looking for folders - "Icons" will be excluded but "Include" will still be there
    $aArray = _FileListToArrayRec($sAutoItDir, "*|ic*|i*", $FLTAR_FOLDERS, $FLTAR_RECUR, $FLTAR_SORT)
    _ArrayDisplay($aArray, "'Icons' out - 'Include' in")

    ; The root of C:\Windows showing hidden/system folders
    $aArray = _FileListToArrayRec("C:\Windows\", "*", $FLTAR_FOLDERS)
    _ArrayDisplay($aArray, "Show hidden folders")

    ; The root of C:\Windows omitting hidden/system folders
    $aArray = _FileListToArrayRec("C:\Windows\", "*", $FLTAR_FOLDERS + $FLTAR_NOHIDDEN + $FLTAR_NOSYSTEM)
    _ArrayDisplay($aArray, "Hide hidden folders")
EndFunc   ;==>Example