以100 nsec粒度显示NTFS时间戳

mgr*_*639 5 vbscript timestamp ntfs granularity

据我所知,FAT文件系统以2秒的粒度存储文件的时间戳(修改日期等),NTFS以100纳秒的粒度存储它们.

我正在使用带有FileSystemObject的VBScript来显示文件详细信息.函数file.DateLastModified以1秒的精度显示日期(在NTFS上).

有没有办法根据NTFS的内部存储粒度显示精度的时间戳.我想象的是像8/9/2010 14:40:30,1234567

如果没有VBScript/FileSystemObject,还有其他方法吗?

pat*_*yts 7

文件时间戳在NTFS中保存为FILETIME,但毫秒部分未传递给Variant DateTime,因此VBS没有看到它.但是WMI对象可以支持这一点.

Sub PrintTimestamp(sFilename)
  Set oWMI = GetObject("winmgmts:!\\.\root\cimv2")
  Set oFiles = oWMI.ExecQuery("Select * from CIM_DataFile where Name = '" & sFilename & "'")
  Set oDateTime = CreateObject("WbemScripting.SWbemDateTime")
  For Each oFile in oFiles
    oDateTime.Value = oFile.LastAccessed
    WScript.Echo oFile.Name & " " & oDateTime.GetVarDate & " " & oDateTime.Microseconds
  Next
End Sub
PrintTimestamp("c:\\temp\\demo.vbs")
Run Code Online (Sandbox Code Playgroud)

  • 函数`oDateTime.Microseconds`将给我一个高达一微秒的粒度.丢失的因素有10个,达到100纳秒.但无论如何,你的答案已经解决了我的问题. (2认同)