Problem mit FileSetTime

  • Hallo Leute,

    ich habe ein Problem mit dem Befehl FileSetTime.

    Mein Ziel ist es bei meiner Fotosammlung das Erstellungs- und Änderungsdatum entsprechend dem originären Datum anzupassen.

    Nun ist mir das auch mit Hife von FileSetTime gelungen. Mein Problem ist nun, dass dieses von FileSetTime korrigierte Datum im Dateiexplorer von Windows 7 um eine ganze Stunde vor geht als wie z.B. mit FileGetTime ausgelesen. Auch im cmd-Fenster wird es korrekt angegeben. (s.a. Screenshots)

    Kennt jemand das Problem? ;(

  • Beim benutzen dieser Funktion scheinen seltsame Probleme in verschiedenen Zeitzonen aufzutauchen (Sommerzeit ist noch mal eine ganz andere Geschichte)...
    Im englischen Forum gibt es dazu zwei Threads, in dem sich auch Entwickler dazu geäußert haben:
    http://www.autoitscript.com/forum/topic/3371-filesettime/
    http://www.autoitscript.com/forum/topic/72…-misunderstood/

    Angeblich wurde der Fehler behoben, aber es wurde nichts an der Dokumentation in der Hilfe geändert und am Problem scheint sich auch nichts getan zu haben.
    Ich dachte aber, dass sich das nur auf den Fall bezieht, wenn der Parameter für das Datum leer gelassen wird um das aktuelle Datum einzusetzen. Vielleicht hat auch erst dieser "Bugfix" das Problem verursacht.
    Ich weiß leider nicht, in welcher Zeit FileSet/GetTime im Moment das angegebene Datum verarbeitet (GMT/UTC usw...).

  • Gibt es Alternativen zu FileSetTime, z.B. über die Kommandozeile?


    Also wenn wirklich nichts geht, hätte ich noch ne relativ alberne Lösung, die aber funktioniert.
    Systemdatum mit _SetDate ändern (evtl. auch _SetTime wenns ganz genau sein soll), Dateien in ein neues Verzeichnis kopieren, wodurch diese das zuvor geänderte Systemdatum als Erstelldatum übernehmen, Systemdatum zurückstellen.
    Wie gesagt, ist ein bisschen albern und mit nem gewaltigen Holzhammer, aber als letzten Ausweg kann mans in Betracht ziehen :whistling:

    Spoiler anzeigen
    [autoit]

    #RequireAdmin

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

    #include <Date.au3>

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

    $sRealDatum = @MDAY & "." & @MON & "." & @YEAR
    $aRealDatum = StringSplit($sRealDatum, ".", 2)

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

    $sZielDatum = "01.04.1999"
    $aZielDatum = StringSplit($sZielDatum, ".", 2)

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

    $bZielDatum = _SetDate($aZielDatum[0], $aZielDatum[1], $aZielDatum[2])
    If $bZielDatum <> 1 Then MsgBox(0, "Fehler", "Fehler beim Ändern des SystemDatums")

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

    $sPath = "C:\<Dein Fotoverzeichnis>"
    $sSource = $sPath & "\Orginaldatei.jpg"
    $sDestination = $sPath & "\NeuesVerzeichnis" & "\Orginaldatei.jpg"
    $bCopy = FileCopy($sSource, $sDestination, 9)
    If $bCopy <> 1 Then MsgBox(0, "Fehler", "Fehler beim Kopieren der Datei" & @CRLF & $sDestination)

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

    $bRealDatum = _SetDate($aRealDatum[0], $aRealDatum[1], $aRealDatum[2])
    If $bRealDatum <> 1 Then MsgBox(0, "Fehler", "Fehler beim Ändern des SystemDatums")

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

    Exit

    [/autoit]


    *edit*
    Bin eben noch über 'nen anderen Befehl gestolpert den ich aber noch nicht getestet habe: _Date_Time_SetFileTime
    Falls der aber auch Ärger macht, gibs immer noch meine Methode... 8)


    Sanfte Grüße :D