web-dev-qa-db-ja.com

ファイルの作成時間をミリ秒単位で取得します

Windowsでファイルの作成時間をより正確に取得する方法はありますか? mp4ビデオの作成時間をミリ秒単位で取得したい。これは可能ですか?

13
Phil

タイムスタンプの解像度

Windowsでのファイルの作成タイムスタンプは、ファイルシステムによって異なります。

  • FAT/VFATの最大解像度は2秒

  • NTFSの最大解像度は100 ns


wmicソリューション

wmicを使用して、ファイルの作成日をマイクロ秒単位で取得できます。

例:

F:\test>wmic datafile where name="f:\\test\\test.txt" get creationdate | findstr /brc:[0-9]
20150329221650.080654+060

作成日20150329221650.080654+060は、次の形式のタイムスタンプです。

yyyymmddHHMMSS.xxxxxxsUUU

どこ:

  • yyyy 4桁の年(0000から9999)。

  • mm 2桁の月(01から12)。

  • dd 2桁の日(01から31)。

  • HH 24時間表記の00から23までの2桁の時間。

  • MM時の2桁の分(00から59)。

  • SS分の2桁の秒数(00〜59)。

  • xxxxxx秒の6桁のマイクロ秒数(000000から999999)

  • sプラス記号(+)またはマイナス記号(-)は、協定世界時(UTC)からの正または負のオフセットを示します。

  • UUU元のタイムゾーンがUTCから逸脱する分数を示す3桁のオフセット。


統計ソリューション

statを使用することもできます( cygwin または mingw インストールから)。

例:

DavidPostill@Hal /f/test
$ stat test.txt | grep Birth
 Birth: 2015-03-29 22:16:50.080654200 +0100

比較のためのdir出力

F:\test>dir /t:c test.txt
 Volume in drive F is Expansion
 Volume Serial Number is 3656-BB63

 Directory of F:\test

29/03/2015  22:16                32 test.txt
               1 File(s)             32 bytes
               0 Dir(s)  1,798,546,849,792 bytes free

参考文献

23
DavidPostill

これをMatlabで取得する方法を見つけました:

Jan Simonによって作成された GetFileTime 関数を使用できます。独自のmexファイルをコンパイルしたくない場合は、コンパイルされたファイル here をダウンロードすることもできます。

Wmic(msのみ)を使用するほど正確ではありませんが、私の目的には適しています。

1
Phil

巧妙な方法をここに示します: https://stackoverflow.com/questions/5180592/showing-ntfs-timestamp-with-100-nsec-granularity

VBScriptを使用してWMIのCIMデータベースをクエリし、ファイルに関連付けられているFILETIME構造体を返します。

EXIFtool など、メディアファイルのメタデータを検査できるオープンソースツールもあります。これは、デジタルカメラで作成されたメディアのメタデータを管理するためのものです。

1
Stavr00