函数参考


_Date_Time_GetFileTime

返回一个包含文件创建,访问,修改的日期和时间

#Include <Date.au3>
_Date_Time_GetFileTime($hFile)

参数

$hFile 将被检索的文件句柄.
使用 _WinAPI_CreateFile 函数的返回值,并具有 GENERIC_READ 访问权.

返回值

返回如下格式数组:
    [0] - 文件创建日期时间的 $tagFILETIME 结构.
    [1] - 文件访问日期时间的 $tagFILETIME 结构.
    [2] - 文件修改日期时间的 $tagFILETIME 结构.

注意/说明

 不是所有文件系统可以记录创建和访问时间.
 并非所有文件系统以同样的方式记录文件时间信息.
 FAT 文件系统, 创建时间有 10 毫秒延迟, 修改时间有 2秒 延迟 , 访问时间有 1 天延迟(真实的访问日期)
 因此, 本函数返回的文件时间信息可能会与 SetFileTime 函数的设置不相同
 NTFS 文件系统更新文件最近访问时间, 最多时会延迟一小时.

相关

_Date_Time_SetFileTime, $tagFILETIME

示例/演示


#include <GUIConstantsEx.au3>
#include <WinAPI.au3>
#include <Date.au3>
#include <WindowsConstants.au3>

Global $iMemo

_Main()

Func _Main()
    Local $hFile, $tFile, $aTime

    ; 创建 GUI
    GUICreate("Time", 400, 300)
    $iMemo = GUICtrlCreateEdit("", 2, 2, 396, 296, $WS_VSCROLL)
    GUICtrlSetFont($iMemo, 9, 400, 0, "Courier New")
    GUISetState()

    ; 创建测试文件并设置文件时间
    $hFile = _WinAPI_CreateFile(@ScriptDir & "\Test.xyz", 1)
    If $hFile = 0 Then _WinAPI_ShowError("Unable to create file")
    $tFile = _Date_Time_EncodeFileTime(@MON, @MDAY, @YEAR, @HOUR, @MIN, @SEC)
    Local $pFile = DllStructGetPtr($tFile)
    _Date_Time_SetFileTime($hFile, $pFile, $pFile, $pFile)
    _WinAPI_CloseHandle($hFile)

    ; 读取文件时间
    $hFile = _WinAPI_CreateFile(@ScriptDir & "\Test.xyz", 2)
    If $hFile = 0 Then _WinAPI_ShowError("Unable to open file")
    $aTime = _Date_Time_GetFileTime($hFile)
    _WinAPI_CloseHandle($hFile)

    MemoWrite("Created ..: " & _Date_Time_FileTimeToStr($aTime[0]))
    MemoWrite("Accessed .: " & _Date_Time_FileTimeToStr($aTime[1]))
    MemoWrite("Modified .: " & _Date_Time_FileTimeToStr($aTime[2]))

    ; 循环直到用户退出
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

    FileDelete(@ScriptDir & "\Test.xyz")

EndFunc   ;==>_Main

; 写入一行到 memo 控件
Func MemoWrite($sMessage)
    GUICtrlSetData($iMemo, $sMessage & @CRLF, 1)
EndFunc   ;==>MemoWrite