Wo sucht "FileFindFirstFile"

  • Hallo Leute, :D

    ich verstehe einfach nicht wo genau AutoIt sucht, wenn im Skript

    [autoit]

    FileFindFirstFile ( "filename" )

    [/autoit]

    steht.
    Wenn ich eine Datei suche, welche im selben Ordner ist wie das AutoIt Skript, findet es diese, aber wenn ich eine weiter entfernte Datei z.B. den Autostart Order suche, kann er diese nicht finden. Warum ist das so ? Wo kann man einstellen welche Verzeichnisse AutoIt durchsucht?

    Außerdem habe ich noch eine Frage: Ich weiß , dass die Wildcard "*" für Zeichen von null oder mehr in Dateien verwendet werden kann. Aber das funktioniert nicht bei Ordnern? Gibt es da irgendeine andere Möglichkeit?

    Ich schon die SuFU und Google benutzt, konnte aber keine zufriedenstellenden Tipps finden.

    Danke schon im voraus für eure Hilfe :)

    MFG DerNeuling23

  • Moin,

    [autoit]

    $hSearch = FileFindFirstFile ("C:\Users\[Username]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\*")
    ; Prüfen, ob die Suche erfolgreich war
    If $search = -1 Then

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

    MsgBox(0, "Fehler", "Es wurden keine Dateien/Verzeichnisse gefunden, die zu dem Suchmuster passen")
    Exit
    EndIf

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

    While 1

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

    $file = FileFindNextFile($search)

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

    If @error Then ExitLoop
    MsgBox(4096, "Datei:", $file)
    WEnd

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

    ; Handle für Suche schliessen
    FileClose($search)

    [/autoit]

    Sollte auch mit Ordnern funktionieren.

    Gruß
    Greenhorn


  • Ich denke es ist hier eher ein Verständnisproblem.
    Die Bezeichnung FileFindFirstFile suggeriert das es eine bestimmte Datei z.B. auf einem Laufwerk sucht.
    Das tut sie allerdings nicht.
    Sie stößt den Vorgang an mit dem man alle Dateien, welche dem angegebenen Pattern entsprechen, in einem bestimmten Ordner einzeln durchgehen kann.
    Das einzeln durchgehen erfolgt dann mit FileFindNextFile und bezieht sich nicht auf die Unterordner sondern nur auf diesen bestimmten Ordner.
    Prinzipiell muss man also auch den Ordner mit angegeben.
    Macht man das nicht verfährt AutoIt so wie es es immer macht in diesen Fällen:
    Es bezieht sich einfach auf das aktuelle WorkingDir welches im Normalfall dem Skriptverzeichnis entspricht.

    Also nochmal konkret: FileFindFirstFile dient nicht der umgangsprachlichen Suche nach Dateien sondern der Auflistung von Dateien in einem Ordner.

  • Hallo Leute,

    ich konnte mich wegen eines Defekts meiner Computers eine Zeit lang nicht melden, tut mir Leid ....

    Erstmal vielen Dank für die Antworten, aber ich glaube ich habe mich etwas schlecht ausgedrückt.

    Grob gesagt suche ich ein Skript mit folgender Funktion:

    Das Skript soll einen bestimmen Order auf meinem Computer finden, der z.B. in C:/x/TEST/ liegt, wobei man x nicht weiß.

    Dann soll das Skript noch eine bestimmte Datei finden, wieder in einem anderen unbekannten Ordner.

    Daraufhin soll es dann die gesuchte Datei in den gesuchten Ordner kopieren.

    Ich hoffe ihr versteht jetzt was ich meine ....

    Freue mich schon auf Antworten :)

    MFG derNeuling23