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 )
$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. |
Erfolg: | True |
Fehler: | False |
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.
$tagFILETIME, _Date_Time_GetFileTime
#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