Text Datei auslesen ohne Dateinamen zu kennen

  • Hallo,

    ich möchte eine datei auslesen ohne das ich ihren Dateinamen kenne (hier mit ??? gekennzeichnet). Gute wäre auch wenn es die zuletzt erstellet datei in dem Ordner ist.

    $sFile = "C:\Users\Desktop\hand\???.txt"

    If Not _FileReadToArray($sFile, $astext) Then
    MsgBox(4096, "Error", " Error reading text file to Array error:" & @error)
    Exit


    Vielen Dank!

    Gruß Paul

  • ich möchte eine datei auslesen ohne das ich ihren Dateinamen kenne (hier mit ??? gekennzeichnet). Gute wäre auch wenn es die zuletzt erstellet datei in dem Ordner ist.

    Eine Datei auszulesen, deren Namen man nicht kennt, wird wohl nicht funktionieren.

    Dein Zusatz 'Gute wäre auch, wenn es die zuletzt erstellte Datei in dem Ordner ist' ist die einzig greifbare Bedingung. Du kannst die Dateien in ein Array lesen, und anhand des Datums 'letzte Änderung' den Namen der aktuellsten Datei ermitteln.

    Edit :
    Schaue Dir mal die Funktion : FileGetTime($sFilename, $FT_MODIFIED, $FT_ARRAY) an.
    Diese liefert zu einem Dateinamen das Datum 'letzte Änderung' (als Array).

    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 (1. August 2017 um 11:47)

  • Hilft es wenn es nur eine Datei in den Ordner gibt?

    Na ja, Du kannst Dir mit der Funktion FileFindFirstFile() natürlich den ersten Dateinamen zurückgeben lassen. Von der Annahme auszugehen, dass es im Verzeichnis immer nur genau eine Datei gibt, ist meiner Meinung nach aber etwas gewagt ;) . Dein Ansatz mit einem Dateiarray ist sicher besser, zudem ist es ein gutes Training für den Umgang mit Arrays im Allgemeinen (sehr nützlich).

    Warte einfach noch etwas - ich bin sicher, eine(r) der Pro's haut gleich einen 3-Zeiler 'raus, der alle Deine Probleme löst. :D

    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."

  • Fast - FileFindFirstFile gibt lediglich ein Suchhandle zurück welches dann in FileFindNextFile zum durchgehen der Dateien verwendet wird.
    Also erst FileFindFirstFile - dann noch noch ein FileFindNextFile und dann hat man die erste Datei.

    Einen 3-Zeiler habe ich mal nicht gemacht - aber einen Vierzeiler:

    AutoIt
    $h_FFFF = FileFindFirstFile(@ScriptDir & "\*")
    $s_Dateiname = FileFindNextFile($h_FFFF)
    FileClose($h_FFFF)
    MsgBox(0,"", $s_Dateiname)


    Vorausgesetzt mit "es gibt nur eine Datei" in dem Ordner ist gemeint dass es auch keine Unterordner gibt - denn die würden mit FileFindNextFile ebenfalls zurück gegeben.

  • Fast - FileFindFirstFile gibt lediglich ein Suchhandle zurück

    Richtig, etwas nachlässig von mir ;) . Da ich bei Files i.d.R. immer mit Handles arbeite, habe ich das wohl stillschweigend vorausgesetzt. In der dt. Onlinehilfe steht im Header zu 'FileFindFirstFile' allerdings auch etwas missverständlich : 'Gibt einen den angegebenen Suchkriterien entsprechenden Dateinamen zurück.'


    @paul25 :
    Ob es sich bei der 'Datei' um ein Verzeichnis handelt, kann man nebenbei wie folgt prüfen:
    (Anmerkung : $sFullName = Dateiname mit voller Pfadangabe)
    If StringInStr(FileGetAttrib($sFullName, 'D') Then ... -> ist ein Verzeichnis

    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."

  • In der dt. Onlinehilfe steht im Header zu 'FileFindFirstFile' allerdings auch etwas missverständlich : 'Gibt einen den angegebenen Suchkriterien entsprechenden Dateinamen zurück.'

    Da bin ich ganz bei dir. Ich finde es sogar nicht nur missverständlich sondern schlicht und ergreifend falsch.