Отображение временной метки NTFS с детализацией 100 нс - PullRequest
5 голосов
/ 03 марта 2011

Я понимаю, что файловая система FAT хранит свои метки времени для файлов (дата изменения и т. Д.) С точностью 2 секунды, а NTFS сохраняет их с частотой 100 нсек.

Я использую VBScript с FileSystemObject, чтобы показать детали файла. Функция file.DateLastModified показывает мне дату с точностью до 1 секунды (в NTFS).

Есть ли способ показать метки времени с точностью в соответствии с гранулярностью внутренней памяти NTFS. Я представляю что-то вроде 9/9/2010 14: 40: 30,1234567

А если бы не VBScript / FileSystemObject, был бы другой способ?

Ответы [ 2 ]

7 голосов
/ 03 марта 2011

Файловые метки времени хранятся как FILETIME в NTFS, но миллисекундная часть не передается в 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")
0 голосов
/ 03 марта 2011

Время файлов с полной точностью легко доступно через собственный Windows API.В этой статье MSDN объясняется, как это сделать: File Times .

Я не знаю ни одного способа чтения 64-битного FILETIME из VBS, тем более что VBS не обрабатывает 64-битныеномера изначально.Если у вас есть FILETIME, вы можете проанализировать его с помощью SWbemDateTime .Вот пример .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...