Wie WildCards in AutoIt?

  • Wie werden WildCards in AutoIt angegeben?

    Konkret:
    Ich möchte mit "_FileListToArray()" einen Ordner durchsuchen, aber bestimmte Datei Typen außen vor lassen.
    Sprich alle Dateien (*.*), bis auf einige (*.xyz; *.yz; ...) im Array haben.

    In der Beschreibung steht: "Für mehr Details ist in der Autoit3-Hilfedatei nach dem Stichwort "WildCards" zu suchen.", als keinen einzigen Treffer bringt ...

    autoit.de/wcf/attachment/22207/

  • Erzähl nix, auf deinem Screenshot sieht man sogar 3 Ergebnisse, wenn du nach "WildCards" suchst sind es sogar 7. Wie dem auch sei relevant für deine Frage ist lediglich der Treffer zu

    [autoit]

    FileFindFirstFile

    [/autoit]

    auf welchen auch fast alle anderen verweisen.

    EDIT:
    Aber mit den sehr beschränkten wildcard Möglichkeiten die dir Autoit hier bietet ist dein Vorhaben ohnehin nicht realisierbar. Du müsstest das Array anschließend mit Hilfe der Stringfunktionen in einer Schleife selbst filtern.

  • Mit _FileListToArray kannst du ja nur eine Wildcard angeben, also zB so:

    [autoit]

    $aFileList = _FileListToArray($path, "*.jpg")

    [/autoit]


    Da ich in meinem aktuellen "Projekt" etwas ähnliches benötige, hatte ich mich auch schon auf die Suche gemacht und folgende Funktion gefunden:

    [autoit]

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

    [/autoit][autoit][/autoit][autoit]

    $path = FileSelectFolder("Bilder-Verzeichnis wählen", "")
    If Not $path Then Exit ;==> Kein Verzeichnis, kein Programm

    [/autoit][autoit][/autoit][autoit]

    $aFileList = _FileListToArrayMultiSelect($path, "*.gif,*.ico,*.jpg,*.jpeg,*.png,*.bmp", ",", 1) ;==> Beispiel für verschiedene Bildtypen

    [/autoit][autoit][/autoit][autoit]

    _ArrayDisplay($aFileList)

    [/autoit][autoit][/autoit][autoit]

    Func _FileListToArrayMultiSelect($dir, $searchlist, $Separator, $iFlag = 0)
    Local $aFileList[1] = [0], $aFileList1, $iN, $Num, $search
    $search = StringSplit($searchlist, $Separator)
    If $search[0] > 0 Then
    For $iN = 1 To $search[0]
    $aFileList1 = _FileListToArray($dir, $search[$iN], $iFlag)
    If Not @error Then
    $Num = UBound($aFileList)
    _ArrayConcatenate($aFileList, $aFileList1)
    $aFileList[0] = $aFileList[0] + $aFileList[$Num]
    _ArrayDelete($aFileList, $Num)
    EndIf
    Next
    EndIf
    Return $aFileList
    EndFunc ;==>_FileListToArrayMultiSelect

    [/autoit]


    Hier muß man allerdings alle Typen angeben, die gesucht werden und nicht umgekehrt Typen ausschließen, so wie du es suchst. Kann man aber sicherlich ummodeln, was ich aber hier nicht tun werde... :whistling:
    Funktioniert super und ist auch sehr schnell. Leider weiss ich nicht, wer die Funktion ursprünglich erstellt hat.

  • Hier eine Variante die die andere Richtung nutzt, also unerwünschtes herausfiltert:

    [autoit]


    #include <array.au3>
    #include <file.au3>

    [/autoit][autoit][/autoit][autoit]

    $path = "C:\Users\????????????\Pictures"

    [/autoit][autoit][/autoit][autoit]

    $aFileList = _FileListToFilteredArray($path, "gif,ico,jpg,jpeg", ",", 1) ;==> Beispiel für verschiedene Bildtypen

    [/autoit][autoit][/autoit][autoit]

    Func _FileListToFilteredArray($dir, $searchlist, $Separator, $iFlag = 0)
    Local $aRaw = _FileListToArray($dir, "*", $iFlag)
    Local $aReturn[UBound($aRaw)]
    Local $aFilter = StringSplit($searchlist, $Separator)
    Local $ignore, $k

    [/autoit][autoit][/autoit][autoit]

    $k = 1
    For $i = 1 To UBound($aRaw)-1
    $ignore = False
    For $j = 1 To UBound($aFilter)-1
    If StringRight($aRaw[$i],StringLen($aFilter[$j])) = $aFilter[$j] Then
    $ignore = True
    ExitLoop
    EndIf
    Next
    If $ignore = False Then
    $aReturn[$k]=$aRaw[$i]
    $k+=1
    EndIf
    Next

    $aReturn[0]=$k-1
    ReDim $aReturn[$k]

    [/autoit][autoit][/autoit][autoit]

    Return $aReturn
    EndFunc

    [/autoit]
  • Ohne hier jemandem zu nahe treten zu wollen...
    Wenn ICH suche, dann finde ich allein im Forum hunderte Treffer.
    Auf der ersten Seite u.a. diesen Thread und hier , in dem die schnellsten Dateisucher gegeneinander antreten und verglichen werden.
    Wenn ich mich recht erinnere, gab es sogar mal einen µ-It zu diesem Thema.

    Und btw. mit Wildcards in der Hilfe suchen bringt am allermeisten...Ich habe noch nie ohne die * vor und hinter dem Suchbegriff gesucht.
    autoit.de/wcf/attachment/22212/