13

Есть ли способ получить время создания файла в Windows с большей точностью? Я хочу получить время создания MP4-видео в миллисекундах. Это возможно?

4 ответа4

22

Разрешение отметки времени

Метка времени создания файла в 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

Дальнейшее чтение

1

Я нашел способ, как получить это в Matlab:

Вы можете использовать функцию GetFileTime, написанную Яном Саймоном. Если вы не хотите компилировать свои собственные mex-файлы, вы также можете скачать скомпилированные файлы здесь.

Это не так точно, как использование wmic (только мс), но для моей цели это подходит.

1

Умный способ демонстрируется здесь: https://stackoverflow.com/questions/5180592/showing-ntfs-timestamp-with-100-nsec-granularity

Он использует VBScript для запроса базы данных CIM WMI и возврата структуры FILETIME связанной с файлом.

Существуют также инструменты с открытым исходным кодом, которые могут проверять метаданные медиа-файла, такие как EXIFtool, который предназначен для управления метаданными медиа-файлов, созданных цифровыми камерами.

-3

Это зависит от файловой системы: FAT имеет разрешение 2 секунды, NTFS теоретически имеет разрешение 100 нс, но фактическое разрешение составляет 10 мс. Тем не менее, прерывания имеют более высокий приоритет, чем дисковый ввод-вывод, и я не уверен, что кэширование записи влияет на отметку времени. Таймеры мультимедиа оптимизированы для точности, поэтому предпочтительнее было бы реализовать синхронизацию.

Вы можете использовать существующий инструмент, такой как XYplorer, для просмотра меток времени с высоким разрешением, или XYplorer показывает мс Вы можете написать собственное приложение. Используйте файл.GetCreationTime Method ; он возвращает структуру DateTime со свойством Millisecond .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .