Как я могу сделать ExifTool переименовывать по модели камеры, если имя содержит косую черту? - Фотопедия
2 голосов
/ 12 июля 2011

Я использую ExifTool для пакетного переименования всех моих фотографий, используя следующие две команды:

"-FileName<${Exif:Model}-(%%f).%%e"
-d %%Y%%m%%d-%%H%%M%%S-%%%%f.%%%%e "-FileName<DateTimeOriginal"

Это дает мне имена файлов, такие как:

20110711-144637-DMC-FZ28-(P1020103).JPG

и

20110711-145144-iPhone 4-(IMG_1004).JPG

Мне прислали несколько снимков, сделанных на Samsung S860 с тегом Model <KENOX S860 / Samsung S860>

Я не уверен, что это делает сам ExifTool (v8.60) или командная оболочка Windows (7 64-bit), но первая команда рассматривает / как изменение каталога и дает ошибка при попытке выполнить:

Warning: Error creating directory for '<KENOX S860  / Samsung S860>-(SDC12529).JPG' - D:/Users/xxx/Desktop/ExifProcess/SDC12529.JPG
Error creating directory <KENOX S860

Есть ли способ заставить ExifTool экранировать символ косой черты?

Я пробовал опции -ex и -E, которые кодируют < и >, но не /.

Есть ли способ заставить ExifTool не обрабатывать / как часть пути?

Ниже приведен полный файл process.bat, который я использую:

@Echo Off
MD D:\Users\xxx\Desktop\ExifProcess
COPY D:\Users\xxx\Pictures\Import\*.jpg D:\Users\xxx\Desktop\ExifProcess
"P:\Program Files (x86)\ExifTool\exiftool.exe" "-FileName<${Exif:Model}-(%%f).%%e" D:\Users\xxx\Desktop\ExifProcess\*.jpg
"P:\Program Files (x86)\ExifTool\exiftool.exe" -d %%Y%%m%%d-%%H%%M%%S-%%%%f.%%%%e "-FileName<DateTimeOriginal" D:\Users\xxx\Desktop\ExifProcess\*.jpg
Pause

Ответы [ 5 ]

5 голосов
/ 12 июля 2011

Используя exiftool, ответ заключается в создании пользовательского тега на основе EXIF: Model, который отфильтровывает оскорбительные символы. Этот вопрос задают и отвечают на форуме ExifTool:

http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,2961

4 голосов
/ 12 июля 2011

Я использую jhead для этого с тех пор, как я узнал об этой функции ExifTool, и я просто использую скрипт-обертку для

  1. извлечение имени модели во временную переменную
  2. изменить имя, используя набор правил, которые я создал
  3. переименовать, используя эту переменную в командной строке оболочки, а не строковые коды самого инструмента переименования

Это немного клудж, но эй, клуджес, для чего вообще нужны сценарии оболочки, верно? И у него есть то преимущество, что он имеет дело с другими странными названиями моделей, такими как ужасно помеченная серия Pentax "* ist". И вы уже используете пакетный скрипт. Просто добавьте немного больше умов на этот уровень.

2 голосов
/ 28 июля 2018

Хотя это было задано некоторое время назад, но так как ни один ответ не помечен как Ответ, я предлагаю это.

Возможно, решение состоит в том, чтобы использовать точку с запятой за Модель для удаления недопустимых символов> модель;

exiftool '-filename<%f_${model;}.%e' dir

Переименуйте все файлы в dir, добавив название модели камеры к имени файла. Точка с запятой после имени тега внутри фигурных скобок приводит к тому, что символы, недопустимые в именах файлов Windows, удаляются из значения тега (объяснение см. В разделе «Расширенная функция форматирования»).

Источник: Документация ExifTool и этот вопрос

2 голосов
/ 05 октября 2012

Попробуйте это:

exiftool '-FileName<${CreateDate}_${Exif:Model}.jpg' -d %Y%m%d_%H%M%S-%%2c *

или это

exiftool '-FileName<${CreateDate}_${Exif:Model}_${filename}' -d %Y%m%d_%H%M%S *
0 голосов
/ 12 июля 2011

Пока единственный ответ, который я придумал, это добавить

-overwrite_original_in_place -preserve "-Model=Samsung S860"

как первое действие ExifTool, но это, очевидно, меняет сам файл, а не только имя файла.

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