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

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: Nik, d-view, Моторокер, Avada, CaptainFlint

newsky
Сообщения: 101
Зарегистрирован: Пт мар 19, 2010 14:54

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

Сообщение 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 .
то задача не выполняется.

Суть вопроса:
Что и где нужно добавить, что-бы выбранным синтаксисом обрабатывались только выделенные в ТС файлы?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

-charset filename=UTF8 -@ %UL вместо точки.
А вообще ExifTool у нас много раз обсуждалась.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
newsky
Сообщения: 101
Зарегистрирован: Пт мар 19, 2010 14:54

Сообщение newsky »

Flasher! Не хватает слов, что-бы выразить Вам всю глубину благодарности, за вашу помощь! Спасибо! Извините, за создание ненужной на форуме темы, впредь буду еще сильней стараться искать, до создания новой темы.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

newsky
Да на здоровье. Против темы ничего не имею (соседняя в том же ключе создавалась по моей инициативе), правда она слишком многозадачная.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Dimsok
Сообщения: 664
Зарегистрирован: Вс авг 17, 2014 00:45

Сообщение Dimsok »

Flasher
А где та тема многозадачная? Что-то не нашёл.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Dimsok
Мы в ней. Внимательно см., где стоит запятая.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Dimsok
Сообщения: 664
Зарегистрирован: Вс авг 17, 2014 00:45

Сообщение Dimsok »

Ну ладно, тогда малозадачная.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Dimsok
Детсад отключаем и включаем логику. Поиск > *exiftool* > Enter.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
A.N.T.
Сообщения: 190
Зарегистрирован: Сб июл 01, 2006 08:50

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

Сообщение 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
Последний раз редактировалось A.N.T. Вс мар 12, 2017 07:02, всего редактировалось 1 раз.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

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

А что мешало тут создать тему? И сортировки, естественно, тут никакой нет.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
A.N.T.
Сообщения: 190
Зарегистрирован: Сб июл 01, 2006 08:50

Сообщение A.N.T. »

Flasher писал(а): А что мешало тут создать тему? И сортировки, естественно, тут никакой нет.
Эх опять я промазал. Извиняюсь.
Flasher писал(а): Вот такие нужны параметры: -r -if $exif:FocalLength#==50 -Directory<FocalLength .
-r для поиска по всей глубине структуры.
Большое спасибо, все работает. А можно расшифровать, что значит $exif:FocalLength#==50
Конкретно интересуют символы # и ==
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Последняя цепочка постов перенесена из отдельной темы в уже имеющуюся.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение 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 немного ускорит поиск, можно добавить к параметрам слева.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
A.N.T.
Сообщения: 190
Зарегистрирован: Сб июл 01, 2006 08:50

Сообщение A.N.T. »

Flasher
Большое спасибо.
newsky
Сообщения: 101
Зарегистрирован: Пт мар 19, 2010 14:54

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

Сообщение newsky »

Имеется синтаксис, для запуска операции с Exiftool, которая сканирует указанную папку с подкаталогами, и создаёт текстовый файл, со списком найденных файлов по критерию, указанному в коде:

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

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