2017-01-02 9 views
1

У меня есть много фотографий с именем формата даты, но даты EXIF ​​не совпадают.EXIFTOOL - Установить дату и время от имени файла

например. 2016-12-16_20-20-29.jpg

Выполнение их через EXIFTOOL Я могу почти перезаписать даты, но не совпадает с точным форматом даты.

exiftool "-datetimeoriginal<filename" ./ 

Это устанавливает дату в правильный календарный день, но игнорирует время.

exiftool "-datetimeoriginal<filename" -d "%Y-%M-%D_%H-%M-%S.%%e" ./ 

Я считаю, что параметр -d задает формат данных, но это возвращает в качестве ошибки Warning: Error parsing time in ExifIFD:DateTimeOriginal (PrintConvInv)

Это правильный метод использовать?

ответ

1

Ваша первая команда должна работать правильно. От Exiftool FAQ 5:
«ExifTool очень гибко относится к фактическому формату ввода даты/времени при записи и будет пытаться переформатировать любые значения в стандартный формат, если не используется опция -n. Любые разделители могут использоваться (или в факт, нет вообще). Первые 4 последовательных цифры, найденные в значении, интерпретируются как год, затем следующие 2 цифры - это месяц и т. д. [Год должен быть 4 цифры. Другие поля должны быть 2 цифры , но одна цифра разрешена, если последующий символ не является цифрой.] "

Пример, приведенный в следующем параграфе, почти совпадает с вашей первой командой.

Опция -d не требуется для этого типа операции.

Пример вывода

C:\>exiftool -datetimeoriginal "X:\!temp\2016-12-16_20-20-29.jpg" 

C:\>exiftool "-datetimeoriginal<filename" "X:\!temp\2016-12-16_20-20-29.jpg" 
    1 image files updated 

C:\>exiftool -datetimeoriginal "X:\!temp\2016-12-16_20-20-29.jpg" 
Date/Time Original    : 2016:12:16 20:20:29 
+0

Вы правильны! Это не сработало, поскольку мои предыдущие попытки испортили данные exif, и это то, что ответ на ошибку. – sidonaldson

2

Чтобы следить за хороший ответ StarGeek в.

Оказывается, я испортил данные exif, и поэтому команда не удалась.

Чтобы исправить это я первый очистил данные

exiftool -all= −overwrite_original ./ 

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

exiftool "-alldates<filename" −overwrite_original ./ 

.n.b −overwrite_original предотвращает создание резервных копий файлов

+2

Дополнительная информация. Вместо того, чтобы очищать все метаданные в файле, вы могли бы попытаться как можно больше восстановить эту команду: 'exiftool -all = -tagsfromfile @ -all: all -unsafe' Кроме того,' -alldates' влияет только на три наиболее распространенных тега даты/времени EXIF: 'DateTimeOriginal',' CreateDate' и 'ModifyDate'. Чтобы изменить все теги datetime, используйте '-Time: all' Вы также можете использовать' -overwrite_original', чтобы избежать резервного копирования файлов. Это немного безопаснее, поскольку сначала делает копию, затем заменяет исходный файл, а не напрямую переписывает исходный файл. – StarGeek

+0

Столько хорошей информации. Благодаря @StarGeek – sidonaldson

 Смежные вопросы

  • Нет связанных вопросов^_^