有没有办法以更高的精度获取 Windows 中文件的创建时间?我想以毫秒为单位获取 mp4 视频的创建时间。这可能吗?
答案1
时间戳解析
Windows中文件的创建时间戳取决于文件系统:
FAT/VFAT 的最大分辨率为 2s
NTFS 的最大分辨率为 100 ns
wmic 解决方案
您可以使用它wmic
来检索文件创建日期(精确到微秒)。
例子:
F:\test>wmic datafile where name="f:\\test\\test.txt" get creationdate | findstr /brc:[0-9]
20150329221650.080654+060
creationdate20150329221650.080654+060
是一个时间戳,格式如下:
yyyymmddHHMMSS.xxxxxxsUUU
在哪里:
yyyy
四位数年份(0000 至 9999)。mm
两位数的月份(01 至 12)。dd
两位数的月份日期(01 至 31)。HH
采用 24 小时制(00 至 23)表示一天中的两位数小时数。MM
小时内的两位数分钟数(00 至 59)。SS
分钟内的两位数秒数(00 至 59)。xxxxxx
秒内的六位微秒数(000000 至 999999)s
加号 (+
) 或减号 (-
) 表示与协调世界时 (UTC) 的正偏移或负偏移。UUU
三位数字的偏移量,表示原始时区与 UTC 的偏差分钟数。
统计解决方案
例子:
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
进一步阅读
- 西米克
- 使用 WMI 处理日期和时间
- Windows CMD 命令行的 AZ 索引是与 Windows cmd 行相关的所有事物的绝佳参考。
答案2
这里演示了一种巧妙的方法:https://stackoverflow.com/questions/5180592/showing-ntfs-timestamp-with-100-nsec-granularity
它使用 VBScript 查询 WMI 的 CIM 数据库并返回FILETIME
与文件相关的结构。
还有一些开源工具可以检查媒体文件的元数据,例如EXIF工具其主要目的是管理数码相机创建的媒体的元数据。
答案3
答案4
它取决于文件系统:FAT 具有 2 秒分辨率,NTFS理论上具有100纳秒的分辨率,但实际分辨率为 10 毫秒也就是说,中断的优先级高于磁盘 I/O,而且我不确定写入缓存对时间戳有何影响。多媒体计时器针对准确性进行了优化,因此是实现计时的首选方式。
您可以使用现有工具,例如XYplorer要查看高分辨率时间戳,或者,您可能更愿意编写自己的应用程序。使用File.GetCreationTime 方法;它返回一个带毫秒的 DateTime 结构财产。