Я использую 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-разрядная версия), но первая команда обрабатывает /
как изменение каталога и выдает ошибку при попытке выполнить :
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
Хотя это было задано некоторое время назад, но, поскольку ни один ответ не помечен как Ответ, я предлагаю это.
Возможно, решение состоит в том, чтобы использовать точку с запятой за моделью для удаления недопустимых символов> модель;
exiftool '-filename<%f_${model;}.%e' dir
Переименуйте все файлы в каталоге, добавив название модели камеры к имени файла. Точка с запятой после имени тега внутри фигурных скобок приводит к удалению символов, недопустимых в именах файлов Windows, из значения тега (пояснение см. в разделе «Расширенные функции форматирования»).
Источник: документация ExifTool и этот вопрос
Используя exiftool, ответ заключается в создании определяемого пользователем тега на основе EXIF:Model, который отфильтровывает оскорбительные символы. Этот вопрос задают и отвечают на форуме ExifTool:
http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,2961
Я использовал jhead
для этого еще до того, как узнал об этой функции ExifTool, и я просто использую скрипт-оболочку для
Это немного глупо, но, эй, кладжи — это то, для чего в первую очередь нужны скрипты оболочки, верно? И у него есть то преимущество, что он имеет дело с другими странными названиями моделей, такими как серия Pentax с ужасной маркировкой «*ist». И вы уже используете пакетный скрипт. Просто добавьте немного больше ума на этот уровень.
Попробуй это:
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 *
Пока единственный ответ, который я придумал, это добавить
-overwrite_original_in_place -preserve "-Model=Samsung S860"
как первое действие ExifTool, но это, очевидно, изменяет сам файл, а не только имя файла.
Яри Кейнянен
Exif:Model
в текстовый файл (2) прокручивать текстовый файл, заменяя его/
, например,-
(3.1) прокручивать папку с фотографиями снова в алфавитном порядке (3.2) переименовывать файлы согласно измененному текстовому файлуматдм