据我所知,FAT文件系统以2秒的粒度存储文件的时间戳(修改日期等),NTFS以100纳秒的粒度存储它们。
我正在使用带有FileSystemObject的VBScript来显示文件详细信息。函数file.DateLastModified以1秒的精度显示日期(在NTFS上)。
有没有办法根据NTFS的内部存储粒度显示精度的时间戳。我想象的是像8/9/2010 14:40:30,1234567
如果没有VBScript / FileSystemObject,还有其他方法吗?
答案 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。