Есть ли способ получить время создания файла в Windows с большей точностью? Я хочу получить время создания MP4-видео в миллисекундах. Это возможно?
4 ответа
Разрешение отметки времени
Метка времени создания файла в Windows зависит от файловой системы:
FAT/VFAT имеет максимальное разрешение 2 с
NTFS имеет максимальное разрешение 100 нс
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.mmmmmmsUUU
где:
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.
стат решение
Вы также можете использовать 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
Дальнейшее чтение
- WMIC
- Работа с датами и временем с использованием WMI
- Индекс AZ командной строки Windows CMD является отличным справочником по всем вопросам, связанным с командной строкой Windows.
Я нашел способ, как получить это в Matlab:
Вы можете использовать функцию GetFileTime, написанную Яном Саймоном. Если вы не хотите компилировать свои собственные mex-файлы, вы также можете скачать скомпилированные файлы здесь.
Это не так точно, как использование wmic (только мс), но для моей цели это подходит.
Умный способ демонстрируется здесь: https://stackoverflow.com/questions/5180592/showing-ntfs-timestamp-with-100-nsec-granularity
Он использует VBScript для запроса базы данных CIM WMI и возврата структуры FILETIME
связанной с файлом.
Существуют также инструменты с открытым исходным кодом, которые могут проверять метаданные медиа-файла, такие как EXIFtool, который предназначен для управления метаданными медиа-файлов, созданных цифровыми камерами.
Это зависит от файловой системы: FAT имеет разрешение 2 секунды, NTFS теоретически имеет разрешение 100 нс, но фактическое разрешение составляет 10 мс. Тем не менее, прерывания имеют более высокий приоритет, чем дисковый ввод-вывод, и я не уверен, что кэширование записи влияет на отметку времени. Таймеры мультимедиа оптимизированы для точности, поэтому предпочтительнее было бы реализовать синхронизацию.
Вы можете использовать существующий инструмент, такой как XYplorer, для просмотра меток времени с высоким разрешением, или Вы можете написать собственное приложение. Используйте файл.GetCreationTime Method ; он возвращает структуру DateTime со свойством Millisecond .