以100 nsec粒度显示NTFS时间戳

时间:2011-03-03 12:15:59

标签: vbscript timestamp ntfs granularity

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

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

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

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

2 个答案:

答案 0 :(得分: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")

答案 1 :(得分:0)

通过本机Windows API可以轻松访问全精度文件时间。此MSDN文章介绍了如何执行此操作:File Times

我不知道从VBS读取64位FILETIME的任何方法,特别是因为VBS本身不处理64位数字。有了FILETIME,你可以用SWbemDateTime解析它。这是一个example