2015-08-09 7 views
2

У меня есть> 400 JPG файлов и файл JSON для каждого, который содержит теги, описание и заголовок изображения. Я нашел эту командуEXIFTool JSON to EXIF ​​пакетная обработка

exiftool -json=picture.json picture.jpg 

Но я не хочу запускать это для каждого файла.
Как я могу запустить эту команду для папки, содержащей JPG и JSON, или есть другой способ, которым я могу их обрабатывать?
Каждый файл JSON имеет то же имя, что и JPG, поэтому легко определить, какие файлы соответствуют друг другу.

ответ

1

Предполагая, что ваши JPG и JSON имеют одно и то же имя файла, но другое расширение (например, picture001.jpg имеет ассоциированное изображение001.json и т. Д.), Пакетный цикл может работать. Предполагая, что вы уже cd в Ред папку и файлы не вложены в папки, что-то, как это должно работать

(for jpg in *.jpg; do exiftool -json=${jpg/\.jpg/.json} $jpg; done) 

Обратите внимание, что это не проверено. Я рекомендую сделать копию вашей папки и проверить ее заранее, чтобы убедиться, что вы не нанесете ей необратимое повреждение.

Я также заметил, что вы используете тег java. Мне пришлось работать с данными EXIF ​​в Java некоторое время назад (on Android then), и я использовал JHeader library. Если вы хотите перевернуть свой собственный инструмент командной строки java, вы сможете использовать классы ввода-вывода Java для перемещения по каталогу и файлам и библиотеке JHeader для изменения данных EXIF.

+0

Спасибо! Я пробовал это, но столкнулся с ошибкой, в этом текстовом поле недостаточно места для копирования, но [вот скриншот, что я сделал и что произошло.] (Http://i.imgur.com/ UZl681a.png) – Raf

+0

Вы не указали окна. Мое решение находится в bash, вы можете работать в Unix-системах. В Windows вам понадобится что-то вроде [cygwin] (https://www.cygwin.com/) или [mingw] (http://www.mingw.org/). Обратите внимание, что вы запускаете скрипт как есть, без exiftool.exe впереди. На данный момент я не смогу сделать DOS/пакетную версию, но применяются те же принципы. Синтаксис будет отличаться –

+0

Ах, ладно, извините, я забыл сказать, что я был в Windows! Спасибо, я загружу cygwin, я полагаю, что использовал это раньше. – Raf