5

FATファイルシステムはファイルのタイムスタンプ(日付の変更など)を2秒の粒度で保存し、NTFSはそれらを100ナノ秒の粒度で保存することを理解しています。

FileSystemObjectでVBScriptを使用して、ファイルの詳細を表示しています。関数file.DateLastModifiedは、1秒の精度で日付を表示します(NTFSの場合)。

NTFSの内部ストレージの粒度に応じた精度でタイムスタンプを表示する方法はありますか。2010年8月9日14:40:30,1234567のようなものを想像しています

そして、VBScript / FileSystemObjectを使用しない場合、他の方法はありますか?

4

2 に答える 2

8

ファイルのタイムスタンプは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")
于 2011-03-03T13:32:30.727 に答える
0

完全精度のファイル時間には、ネイティブのWindowsAPIを介して簡単にアクセスできます。このMSDNの記事では、その方法について説明しています:FileTimes

特にVBSは64ビットの数値をネイティブに処理しないため、VBSから64ビットのFILETIMEを読み取る方法がわかりません。ただし、FILETIMEを取得したら、SWbemDateTimeを使用して解析できます。これがです。

于 2011-03-03T13:23:39.037 に答える