2011-03-03 5 views
4

FAT 파일 시스템은 파일에 대한 시간 스탬프 (날짜 등 수정)를 2 초 단위로 저장하고 NTFS는 100nsec 단위로 저장한다는 것을 알고 있습니다.100nsec 단위로 NTFS 타임 스탬프 표시

파일 세부 정보를 표시하기 위해 FileSystemObject와 함께 VBScript를 사용하고 있습니다. 함수 file.DateLastModified는 NTFS에서 1 초의 정밀도로 날짜를 표시합니다.

NTFS의 내부 저장소 세분성에 따라 정밀도로 타임 스탬프를 표시하는 방법이 있습니까? 나는 8/9/2010 14 : 40 : 30,1234567

과 같은 것을 상상하고 있습니다. VBScript/

답변

6

파일 타임 스탬프는 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")
+0

처음에는 왜 오류가 발생했는지 파악하는 데 시간이 걸렸습니다. 파일 경로에 c : \\ temp \\ file.txt와 같이 두 개의 백 슬래시를 제공해야한다는 것을 알았습니다. 그런 다음 작동합니다. – mgr326639

+1

함수'oDateTime.Microseconds'는 최대 1 마이크로 초의 입도를 줄 것입니다. 100 나노초에 도달하기위한 10 가지 요인 중 하나. 하지만 당신의 대답은 어쨌든 내 문제를 해결했습니다. – mgr326639

0

원시 Windows API를 통해 정밀도가 높은 파일 시간에 쉽게 액세스 할 수 있습니다. 이 MSDN 문서에서는 방법을 설명합니다 : File Times.

VBS에서 64 비트 파일을 기본적으로 처리하지 않기 때문에 VBS에서 64 비트 FILETIME을 읽을 방법이 없습니다. FILETIME을 얻었 으면 SWbemDateTime으로 구문 분석 할 수 있습니다. 다음은 example입니다.