Problem mit FileGetTime

  • Hallo,

    ich quäle mich schon eine weile mit dem FileGetTime ich möchte gerne erreichen das heute erstellte Dateien mit Filecopy in ein anderen Ordner ablege. Mein Lösungsansatz ist dieser.

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    #include <date.au3>
    $folder = "c:\Thomas\"
    $ordner = "c:\Thomas\Test"
    $search = FileFindFirstFile($folder & "*.xls")
    $now = @MDAY &"."& @MON &"." & @YEAR
    While 1
    $file = FileFindNextFile($search)
    if @error Then ExitLoop
    if FileGetTime($folder & $file,1,1) = _Now() Then
    $now = FileGetTime($folder & $file,0,1)
    _test()
    EndIf
    WEnd
    Func _test()
    MsgBox(0,"Thomas","je")
    EndFunc

    [/autoit]
    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    #include <date.au3>
    Dim $array[1] = [0]
    $dir = 'c:\Thomas\'
    $start = FileFindFirstFile($dir & '*.xls')
    While 1
    $file_found = FileFindNextFile($start)
    If @error Then ExitLoop
    $time = FileGetTime($dir & $file_found, 1,1)
    _ArrayAdd($array, $time & ' -> ' & $file_found)
    If $start = _Now() Then
    _test()
    EndIf
    WEnd

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

    _ArrayDisplay($array, 'with date/time (YYYY.MM.DD)')

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

    Func _test()
    MsgBox(0,"Thomas","je")
    EndFunc

    [/autoit]

    Ich bekomme aber leider nicht die Datei angezeigt die wirklich heute erstellt wurde.
    Somit kann ich sie auch nicht kopieren. Wie kann ich es anders lösen?

    Mfg Thomas :hm:

    MFG ThomasB

    *
    Ich lese viel und gerne (und wenn ich alle Mahnungen durch habe, schmeiße ich sie weg)
    *

    • Offizieller Beitrag

    Hi,

    habe es auch mal schnell probiert:

    [autoit]


    #include <File.au3>
    $Fromfolder = @ScriptDir & "\"
    $ToFolder = @ScriptDir & "\txt"
    $ext = "*.txt"

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

    $val = copyFilesFromToday($Fromfolder, $ToFolder, $ext)
    MsgBox(64, "Info", "ReturnValue = " & $val & @CRLF & "Kopiert wurden : " & @extended & " Files" & @CRLF & "ErrorCode: " & @error)

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

    Func copyFilesFromToday($Fromfolder, $ToFolder, $ext = "*.", $copyFlag = 1)
    Local $count = 0
    Local $fileList = _FileListToArray($Fromfolder, $ext)
    If @error = 1 Then Return -1
    For $i = 1 To UBound($fileList) - 1
    If StringLeft(FileGetTime($Fromfolder & $fileList[$i], 1, 1), 8) = @YEAR & @MON & @MDAY Then
    FileCopy($Fromfolder & $fileList[$i], $ToFolder, $copyFlag)
    $count += 1
    EndIf
    Next
    SetError(0, $count)
    Return 1
    EndFunc ;==>copyFilesFromToday

    [/autoit]

    So long,

    Mega

  • hi,

    danke es sieht ja doch komplizierter aus als ich mir es vorgestellt habe. :keks:

    im engl. Forum bin auf das Script gestossen,

    Spoiler anzeigen
    [autoit]

    $time = FileGetTime("c:\thomas\1.txt")
    $moncalc=StringSplit("31,28,31,30,31,30,31,31,30,31,30,31",",")
    ;$time[0] = year
    ;$time[1] = month
    ;$time[2] = day
    $mon=0
    For $i=1 To @MON
    $mon=$mon+$moncalc[$i]
    Next
    For $i=1 To $time[1]
    $mon=$mon-$moncalc[$i]
    Next
    $Timedif=(((@YEAR-$time[0])*365)+($mon)+@mday-$time[2])
    MsgBox(1,"Date was "&$time[1]&"/"&$time[2]&"/"&$time[0],$timedif & " Days old")

    [/autoit]


    Kann man das so benutzen, das erkannt wir in welchen Ordner die Datei gehört.
    z.B 03.12.2006 gehört in den Ordner Dezember 2006(oder 12 2006)
    03.012007 gehört in den Ordner Januar 2007?

    Mfg Thomas

    MFG ThomasB

    *
    Ich lese viel und gerne (und wenn ich alle Mahnungen durch habe, schmeiße ich sie weg)
    *

  • hi,

    dein versuch läuft super. was ich machen möchte ist nur eine überlegung ob man die dateien in eine bestimmten ordner wie ich es beschrieben habe zusätzlich verschieben kann. es kann auch seperat von dem ersten script laufen.
    nochmals danke für das erste script.

    mfg thomas

    MFG ThomasB

    *
    Ich lese viel und gerne (und wenn ich alle Mahnungen durch habe, schmeiße ich sie weg)
    *

  • hi,

    ja so dachte ich es mir. er soll es aber anhand des tagesdatum erkennen.

    thx

    mfg
    thomas

    MFG ThomasB

    *
    Ich lese viel und gerne (und wenn ich alle Mahnungen durch habe, schmeiße ich sie weg)
    *

  • hi,

    ne ne nicht nach tagesdatum nur nach monat und jahr. wir wollen es nicht übertreiben, sonst wird es zu doll.

    Thomas

    MFG ThomasB

    *
    Ich lese viel und gerne (und wenn ich alle Mahnungen durch habe, schmeiße ich sie weg)
    *

    • Offizieller Beitrag

    Hi,

    okay versuch Nr. 1 ;)

    [autoit]


    #include <File.au3>
    copyFilesFromToday(@ScriptDir & "\")

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

    Func copyFilesFromToday($Fromfolder, $ext = "*.txt", $ToFolder = "", $copyFlag = 1)
    Local $count = 0
    If $ToFolder = "" Or $ToFolder = Default Then $ToFolder = @ScriptDir & "\" & @YEAR & @MON & "\"
    Local $fileList = _FileListToArray($Fromfolder, $ext)
    If @error = 1 Then Return -1
    For $i = 1 To UBound($fileList) - 1
    If StringLeft(FileGetTime($Fromfolder & $fileList[$i], 1, 1), 8) = @YEAR & @MON & @MDAY Then
    DirCreate($ToFolder)
    FileCopy($Fromfolder & $fileList[$i], $ToFolder, $copyFlag)
    $count += 1
    EndIf
    Next
    SetError(0, $count)
    Return 1
    EndFunc ;==>copyFilesFromToday

    [/autoit]

    So long,

    Mega

  • hi,

    mh, ich weis jetzt nicht was er macht. er gibt nur zurück 1 und dann nichts mehr. keine funktion? habe ich naoch was falsch gemacht?

    thomas

    MFG ThomasB

    *
    Ich lese viel und gerne (und wenn ich alle Mahnungen durch habe, schmeiße ich sie weg)
    *

    • Offizieller Beitrag

    Hi,

    er nimmt alle im Scriptordner liegenden Txt-Files guckt aufs Datum. Dann nimmt alle die von heute sind und legt sie in einen Ordner 200612 unterhalb des ScriptDir -- weil ja im Dez 2006 gestartet.

    Ich dachte, dass sollte so. Du kannst natürlich auf Extension usw. anpassen.

    So long,

    Mega

  • also so funktioniert die funktion eigentlich ganz prima und einwandfrei :keks:....

    nur wenn ich den ordner wechseln will z.b. die dateien alle nach "/test123/####"(#### steht dann für den ordnernamen bzw datum wann die datei erstellt wurde) funktioniert die funktion nicht liefert aber trotzdem 1 zurück...nun gut dass war hier auch soweit ich verstanden hab auch nicht erwünsch wäre in meinen augen jedoch eine sinnvoll erweiterung...

    ebenfallls das kopieren von anderen filetypen funktioniert nicht z.b.

    [autoit]

    copyFilesFromToday(@ScriptDir & "\","*.bmp")

    [/autoit]

    die funktionion liefert zwar 1 aber es passiert nichts(hab *.bmp im gleichen odner drinn daran liegts nicht)

    sonst sind mir keine fehler aufgefallen :rolleyes:

    PS: ja nun gut meine "fehler" sind keine wirklichen fehler sind jedoch sehr gute erweitungsmöglichkeiten die auf jeden fall noch eingebaut werden sollten...

    PSS:was hat es copyflag auf sich??^^

    • Offizieller Beitrag

    Hi,

    die Funktion hat auch kein perfektes Errorhandling.

    Die Frage ist, ob deine bmp Dateien auch wirklich HEUTE!!! erstellt worden. Die Funktion sollte ja gebaut werden, dass nur Dateien die heute erstellt wurden in den Monatsordner aufgeteilt werden.

    Das CopyFlag wird in Filecopy weiterverwendet. Siehe FileCopy, dann siehst du was es macht.

    So long,

    Mega

  • hi,
    :schild4:
    ich habe das nochmal getestet. ja es geht.eine andere frage wäre noch ob der monatsname nur numerisch erscheinen muss oder auch als wort?
    ansonsten herzlichen dank
    :schild4:
    mfg thomas

    MFG ThomasB

    *
    Ich lese viel und gerne (und wenn ich alle Mahnungen durch habe, schmeiße ich sie weg)
    *

    • Offizieller Beitrag

    Hi,

    schön! Wie gesagt es geht "fast" alles. Du mußt nur wissen was du haben willst. ;)

    So long,

    Mega

    PS: Werde mal gucken wann ich das einbauen kann.

    Ordnername (ungefähr so) : Dezember2006, November2006, oder 2006November, 2006Dezember?

    oder \2006\Dezember und 2006\November ...

    PSS: Ich habe numerisch gewählt, weil dann das sortieren in der Explorer-Ansicht automatisch passiert. (Nach Name)

  • hi,
    ich denke es reicht wenn es so aussieht Dezember 2006

    thx

    thomas

    MFG ThomasB

    *
    Ich lese viel und gerne (und wenn ich alle Mahnungen durch habe, schmeiße ich sie weg)
    *

  • Hi,

    ich denke das es nicht mehr akut ist. Es läuft so super das wir das lassen können.

    Nochmal THX

    MFG Thomas

    MFG ThomasB

    *
    Ich lese viel und gerne (und wenn ich alle Mahnungen durch habe, schmeiße ich sie weg)
    *