Dateien mit neuestem Datum kopieren

  • Ich habe einen Ordner mit allerhand Textdateien drin. Der Inhalt ändert sich immer in bestimmten Abständen. ich möchte aus diesem ordner nun die beiden Dateien kopieren, die das neueste Datum haben. Das geht sicher, nur wie?

    3 Mal editiert, zuletzt von Scritch (15. Februar 2011 um 15:12)

  • Sowas in der Art hab ich mir auch mal gebastelt.

    [autoit]


    ;ungefährer ablauf... Achtung nur pseudocode:
    $anfang = _FileListToArray ; um erstmal eine liste aller Dateien zum Programmstart zuhaben
    ; Dann die Zeitstempel aller Dateien im Array mit einer Schleife auslesen und in ein Zeitarray $zeit speichern
    while...
    $zeit[$index]=FileGetTime($anfang[$index])
    wend
    ; im anschluss die neueste Datei ermitteln:
    $trefferindex = _ArrayMaxIndex($zeit)
    $datei = $anfang[$trefferindex]

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

    ; danach überwacht man dann in einer Schleife das Verzeichnis auf Änderungen
    while 1
    $neu = _FileListToArray
    if $neu <> $anfang then
    $anfang = $neu
    ; --> wieder zeit array ermitteln neueste datei mit dem datum des alten treffers abgleichen, wenn wirklich neu dann funktion aufrufen die das gewünschte erledigt
    else
    sleep(1000) ; verzeichnis inhalt hat sich nicht geändert...
    endif
    wend

    [/autoit]

    Hab jetzt keine Lust das rauszusuchen, aber so in der Art lies sich das realisieren. Wenn man auch die zweitneueste Datei will muss man wohl noch ein wenig ändern...
    Vielleicht gibts aber auch eine viel einfachere Lösung?

  • Zitat

    Hallo Scritch,

    die Lösung würde sicher auch andere interessieren, kannt du sie bitte eintellen,

    mfg autoBert


    Moin,
    war ein Fehler, habe mich verklickt. Eine Lösung habe ich noch nicht. Werde mir das von misterspeed nachher mal anschauen. Danke schonmal dafür.

  • Was auch gehen würde, und vll. einfacher wäre: Alle Dateien mit dem heutigen Datum kopieren.

    Edit:
    Habe da mal was gebastelt, was meinen Ansprüchen genügt:

    Spoiler anzeigen
    [autoit]

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

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

    DirCreate(@ScriptDir & '\' & StringFormat('%s.%s.%s', @MDAY, @MON, @YEAR))
    $date = _DateTimeFormat(_NowCalc(), 2)
    ;MsgBox(1, "lala", $date)

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

    $filesarray = @ScriptDir
    $arrayderfiles = _FileListToArray($filesarray)
    ;_ArrayDisplay($arrayderfiles)

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

    for $a = 1 to ubound($arrayderfiles) - 1
    $file = @ScriptDir & "\" & $arrayderfiles[$a]
    $t = filegettime($file, 1)
    $yyyymd = $t[2] & "." & $t[1] & "." & $t[0]
    If $yyyymd = $date Then
    filecopy($file, $date)
    ;MsgBox(0, "Erstelldatum von notepad.exe", $yyyymd)
    EndIf
    Next

    [/autoit]

    Einmal editiert, zuletzt von Scritch (15. Februar 2011 um 15:12)