Funktionreferenz


_Date_Time_SetFileTime

Beschreibung anzeigen in

Setzt das Datum und die Zeit einer Datei für den Status Erstellt, letzter Zugriff und Verändert

#include <Date.au3>
_Date_Time_SetFileTime ( $hFile, $tCreateTime, $tLastAccess, $tLastWrite )

Parameter

$hFile Handle zu der Datei. Das Datei Handle muss mit der Funktion CreateFile und FILE_WRITE_ATTRIBUTES Zugriffsrechten erstellt worden sein.
$tCreateTime eine $tagFILETIME Struktur oder ein Zeiger auf diese, die das neue Datum und Uhrzeit für 'Datei erstellt' beinhaltet.
Wenn '0' gesetzt wird, wird diese Information nicht verändert.
$tLastAccess eine $tagFILETIME Struktur oder ein Zeiger auf diese, die das neue Datum und Uhrzeit für 'letzter Zugriff' beinhaltet.
Die Zeitangabe für 'letzter Zugriff' gilt auch für den letzten Schreib- /Lesezugriff oder (im Falle einer ausführbaren Datei) deren letzte Ausführung.
Wenn '0' gesetzt wird, wird diese Information nicht verändert.
Um den Zeitstempel einer Datei für 'letzter Zugriff' auch nach Zugriff unverändert zu bewahren, ist die Funktion _Date_Time_SetFileTime und dieser Parameter mit -1 aufzurufen, bevor das Handle der Datei beendet wird.
$tLastWrite eine $tagFILETIME Struktur oder ein Zeiger auf diese, die das neue Datum und Uhrzeit für 'Datei verändert' beinhaltet.
Wenn '0' gesetzt wird, wird diese Information nicht verändert.

Rückgabewert

Erfolg: True
Fehler: False

Bemerkungen

Nicht alle Dateisysteme können die Daten für 'Erstellung' und 'letzten Zugriff' speichern und die Dateisysteme speichern diese Information auch nicht immer in der selben Art und Weise.
Als Beispiel, in FAT-Dateisystemen hat die 'Erstellungszeit' eine Auflösung von 10 Millisekunden, 'letzte Änderung' eine Auflösung von 2 Sekunden und 'letzter Zugriff' hat eine Auflösung von 1 Tag (im Grunde also nur das Datum).
Daher gibt die _Date_Time_GetFileTime() Funktion möglicherweise nicht die selben Zeiten zurück, wie diese durch _Date_Time_SetFileTime() erstellt wurden.
NTFS verzögert das Erstellen des Zeitstempels für 'letzter Zugriff' bis zu einer Stunde nach dem letzten Zugriff.

Verwandte Funktionen

$tagFILETIME, _Date_Time_GetFileTime

Beispiel

#include <Date.au3>
#include <GUIConstantsEx.au3>
#include <WinAPIError.au3>
#include <WinAPIFiles.au3>
#include <WinAPIHObj.au3>
#include <WindowsConstants.au3>

Global $g_idMemo

Example()

Func Example()
    Local $hFile, $tFile, $aTime
    Local $sTempFile = @TempDir & "\Test.xyz"

    ; Erstellen der GUI
    GUICreate("Zeit", 400, 300)
    $g_idMemo = GUICtrlCreateEdit("", 2, 2, 396, 296, $WS_VSCROLL)
    GUICtrlSetFont($g_idMemo, 9, 400, 0, "Courier New")
    GUISetState(@SW_SHOW)

    ; Erzeugen einer Test Datei und setzen der Dateizeit
    $hFile = _WinAPI_CreateFile($sTempFile, 1)
    If $hFile = 0 Then _WinAPI_ShowError("Die Datei konnte nicht erstellt werden")
    $tFile = _Date_Time_EncodeFileTime(@MON, @MDAY, @YEAR, @HOUR, @MIN, @SEC)
    Local $pFile = DllStructGetPtr($tFile)
    _Date_Time_SetFileTime($hFile, $tFile, $tFile, $tFile)
    _WinAPI_CloseHandle($hFile)

    ; Liest die Dateizeit
    $hFile = _WinAPI_CreateFile($sTempFile, 2)
    If $hFile = 0 Then _WinAPI_ShowError("Die Datei konnte nicht geöffnet werden")
    $aTime = _Date_Time_GetFileTime($hFile)
    _WinAPI_CloseHandle($hFile)

    MemoWrite("Erstellt ..: " & _Date_Time_FileTimeToStr($aTime[0]))
    MemoWrite("Letzter Zugriff .: " & _Date_Time_FileTimeToStr($aTime[1]))
    MemoWrite("Letzte Änderung .: " & _Date_Time_FileTimeToStr($aTime[2]))

    ; Die Schleife wiederholt sich, bis der Benutzer die Beenden-Aktion der GUI auslöst.
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

    FileDelete($sTempFile)
EndFunc   ;==>Example

; Schreibt eine Zeile in das Memo Control
Func MemoWrite($sMessage)
    GUICtrlSetData($g_idMemo, $sMessage & @CRLF, 1)
EndFunc   ;==>MemoWrite