Страница 1 из 7

Автоматизация при использовании Exiftool

Добавлено: Вт сен 27, 2016 14:46
newsky
Сделал кнопки, для выполнения разных задач с использованием Exiftool, например:

Код: Выделить всё

TOTALCMD#BAR#DATA
%COMMANDER_PATH%\soft\exiftool\exiftool.exe
-m -all= -overwrite_original .
%COMMANDER_PATH%\wcmicons2.dll,82
Удалить ВСЕ метаданные в фото

1
-1
Кнопка прекрасно отрабатывает задачу, если необходимо обработать все файлы в папке. Насколько я понимаю, за это отвечает "точка" в коде для выполнения действий в Exiftool, TC тут никак не участвует. Если убрать точку в

Код: Выделить всё

-m -all= -overwrite_original .
то задача не выполняется.

Суть вопроса:
Что и где нужно добавить, что-бы выбранным синтаксисом обрабатывались только выделенные в ТС файлы?

Добавлено: Вт сен 27, 2016 15:19
Flasher
-charset filename=UTF8 -@ %UL вместо точки.
А вообще ExifTool у нас много раз обсуждалась.

Добавлено: Вт сен 27, 2016 15:54
newsky
Flasher! Не хватает слов, что-бы выразить Вам всю глубину благодарности, за вашу помощь! Спасибо! Извините, за создание ненужной на форуме темы, впредь буду еще сильней стараться искать, до создания новой темы.

Добавлено: Вт сен 27, 2016 16:02
Flasher
newsky
Да на здоровье. Против темы ничего не имею (соседняя в том же ключе создавалась по моей инициативе), правда она слишком многозадачная.

Добавлено: Ср сен 28, 2016 20:38
Dimsok
Flasher
А где та тема многозадачная? Что-то не нашёл.

Добавлено: Ср сен 28, 2016 20:46
Flasher
Dimsok
Мы в ней. Внимательно см., где стоит запятая.

Добавлено: Ср сен 28, 2016 21:33
Dimsok
Ну ладно, тогда малозадачная.

Добавлено: Ср сен 28, 2016 21:56
Flasher
Dimsok
Детсад отключаем и включаем логику. Поиск > *exiftool* > Enter.

Перемещение фотографий в каталог по тегу (exiftool)

Добавлено: Сб мар 11, 2017 19:02
A.N.T.
Господа, прошу помощи, задача следующая: найти файлы с тегом FocalLength = 50 и переместить их в отдельный каталог. Важно, чтобы это происходило автоматически, нажатием 1 кнопки.
Уверен, что это возможно с помощью exiftool, но не могу разобраться.
Такая кнопка сортирует файлы по тегу FocalLength. Те на каждое значение тега создает отдельную папку. Мне нужно чтобы папка была создана только для значения 50.

Код: Выделить всё

TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Work\_automate_tools\exiftool.exe
"-Directory<FocalLength" -d "%T%%Y-%%m-%%d" .
%COMMANDER_PATH%\Work\_automate_tools\exiftool.exe
WPG

1
-1

Добавлено: Сб мар 11, 2017 20:36
Flasher
В этой кнопке ключ -d задаёт формат даты через переменные cmd, он здесь лишний. %T тоже не понять зачем там.
Вот такие нужны параметры: -r -if $exif:FocalLength#==50 -Directory<FocalLength .
-r для поиска по всей глубине структуры.

А что мешало тут создать тему? И сортировки, естественно, тут никакой нет.

Добавлено: Вс мар 12, 2017 07:01
A.N.T.
Flasher писал(а): А что мешало тут создать тему? И сортировки, естественно, тут никакой нет.
Эх опять я промазал. Извиняюсь.
Flasher писал(а): Вот такие нужны параметры: -r -if $exif:FocalLength#==50 -Directory<FocalLength .
-r для поиска по всей глубине структуры.
Большое спасибо, все работает. А можно расшифровать, что значит $exif:FocalLength#==50
Конкретно интересуют символы # и ==

Добавлено: Вс мар 12, 2017 08:02
Avada
Последняя цепочка постов перенесена из отдельной темы в уже имеющуюся.

Добавлено: Вс мар 12, 2017 10:30
Flasher
A.N.T.
Вообще-то в справке есть описание ключа:

[cut="-if *EXPR*"]Specify a condition to be evaluated before processing each *FILE*.
*EXPR* is a Perl-like logic expression containing tag names prefixed by "$" symbols. It is evaluated with the tags from each *FILE* in turn, and the file is processed only if the expression returns true. Unlike Perl variable names, tag names are not case sensitive and may contain a hyphen. As well, tag names may have a leading group names separated by colons, and/or a trailing "#" character to disable print conversion. The expression $GROUP:all evaluates to 1 if any tag exists in the specified "GROUP", or 0 otherwise (see note 2 below). When multiple -if options are used, all conditions must be satisfied to process the file. Returns an exit status of 1 if all files fail the condition. Below are a few examples:
# extract shutterspeed from all Canon images in a directory
exiftool -shutterspeed -if "$make
eq 'Canon'" dir

# add one hour to all images created on or after Apr. 2, 2006
exiftool -alldates+=1 -if "$CreateDate
ge '2006:04:02'" dir

# set EXIF ISO value if possible, unless it is set already
exiftool "-exif:iso<iso" -if "
not $exif:iso" dir

# find images containing a specific keyword (case insensitive)
exiftool -if "$keywords
=~ /harvey/i" -filename dir
Notes:

1) The -n and -b options also apply to tags used in *EXPR*.

2) Some binary data blocks are not extracted unless specified explicitly. These tags are not available for use in the -if condition unless they are also specified on the command line. The alternative is to use the $GROUP:all syntax. (eg. Use $exif:all instead of $exif in *EXPR* to test for the existence of EXIF tags.)

3) Tags in the string are interpolated the same way as with -p before the expression is evaluated. In this interpolation, $/ is converted to a newline and $$ represents a single "$" symbol (so
Perl variables, if used, require a double "$").

4) The condition may only test tags from the file being processed.
To process one file based on tags from another, two steps are required. For example, to process XMP sidecar files in directory "DIR" based on tags from the associated NEF:

Код: Выделить всё

exiftool -if EXPR -p '$directory/$filename' -ext nef DIR > nef.txt
exiftool -@ nef.txt -srcfile %d%f.xmp ...
5) The -a option has no effect on the evaluation of the expression, and the values of duplicate tags are accessible only by specifying a group name (such as a family 4 instance number, eg. $Copy1:TAG, $Copy2:TAG, etc).[/cut]
$exif: проверяет существование заданного тега, # подавляет вывод остальной (в данном случае - далее 2-х символов) части '.00 mm' значения переменной (если используются очень большие телевики с DGX-конвертером при f≥500, то имеет смысл поставить точку после 50), == в отличии от eq производит числовое сравнение и не требует доп. знаков.
Ключ -fast2 немного ускорит поиск, можно добавить к параметрам слева.

Добавлено: Вс мар 12, 2017 16:45
A.N.T.
Flasher
Большое спасибо.

Синтаксис для кнопки

Добавлено: Пт авг 11, 2017 12:14
newsky
Имеется синтаксис, для запуска операции с Exiftool, которая сканирует указанную папку с подкаталогами, и создаёт текстовый файл, со списком найденных файлов по критерию, указанному в коде:

Код: Выделить всё

exiftool -p "$directory/$filename" -r -if "$xmptoolkit =~ /ExifTool/" d:\photo\Mobile\Camera> exiftool_files.txt
Как нужно изменить код, что-бы сделать из него кнопку ТС с тем нюансом, что папка для сканирования должна быть текущая, активная папка, а не чётко прописанная в коде? А итоговый файл, что-бы создавался или в той-же активной папке или в противоположной папке ТС?