mExiftoolOtherAdvanced.sh 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  1. #!/bin/bash
  2. E='echo -e';e='echo -en';trap "R;exit" 2
  3. ESC=$( $e "\e")
  4. TPUT(){ $e "\e[${1};${2}H" ;}
  5. CLEAR(){ $e "\ec";}
  6. # 25 возможно это
  7. CIVIS(){ $e "\e[?25l";}
  8. # это цвет текста списка перед курсором при значении 0 в переменной UNMARK(){ $e "\e[0m";}
  9. MARK(){ $e "\e[1;90m";}
  10. # 0 это цвет заднего фона списка
  11. UNMARK(){ $e "\e[0m";}
  12. # ~~~~~~~~ Эти строки задают цвет фона ~~~~~~~~
  13. R(){ CLEAR ;stty sane;CLEAR;};
  14. # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  15. HEAD(){ for (( a=2; a<=25; a++ ))
  16. do
  17. TPUT $a 1
  18. $E "\033[34m\xE2\x94\x82 \xE2\x94\x82\033[0m";
  19. done
  20. TPUT 2 3
  21. $E "\033[1;36mДругие варианты\033[0m \033[2mOther options\033[0m";
  22. TPUT 8 3
  23. $E "\033[1;36mОсобые возможности\033[0m \033[2mSpecial features\033[0m";
  24. TPUT 12 3
  25. $E "\033[1;36mРасширенные oпции\033[0m \033[2mAdvanced options\033[0m";
  26. TPUT 24 4
  27. $E "\033[32mUp \xE2\x86\x91 \xE2\x86\x93 Down Select Enter\033[0m";
  28. MARK;TPUT 1 1
  29. $E "\033[0m\033[34m+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+\033[0m" ;UNMARK;}
  30. i=0; CLEAR; CIVIS;NULL=/dev/null
  31. FOOT(){ MARK;TPUT 26 1
  32. $E "\033[0m\033[34m+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+\033[0m";UNMARK;}
  33. # это управляет кнопками ввер/хвниз
  34. i=0; CLEAR; CIVIS;NULL=/dev/null
  35. #
  36. ARROW(){ IFS= read -s -n1 key 2>/dev/null >&2
  37. if [[ $key = $ESC ]];then
  38. read -s -n1 key 2>/dev/null >&2;
  39. if [[ $key = \[ ]]; then
  40. read -s -n1 key 2>/dev/null >&2;
  41. if [[ $key = A ]]; then echo up;fi
  42. if [[ $key = B ]];then echo dn;fi
  43. fi
  44. fi
  45. if [[ "$key" == "$($e \\x0A)" ]];then echo enter;fi;}
  46. M0(){ TPUT 3 3; $e "Прочитать аргументы командной строки из указанного файла \033[32m -@ ARGFILE \033[0m";}
  47. M1(){ TPUT 4 3; $e "Сделайте паузу с сообщением, нажмите клавишу или нажмите RETURN \033[32m -k (-pause) \033[0m";}
  48. M2(){ TPUT 5 3; $e "Распечатать список всех допустимых имен тегов \033[32m -list -listw -listf -listr -listwf -listg[NUM] -listd -listx\033[0m";}
  49. M3(){ TPUT 6 3; $e "Вывести номер версии exiftool \033[32m -ver \033[0m";}
  50. M4(){ TPUT 7 3; $e "Обозначает конец опций \033[32m -- \033[0m";}
  51. #
  52. M5(){ TPUT 9 3; $e "Изображения с геотегами из указанного файла журнала GPS-трека \033[32m -geotag TRKFILE \033[0m";}
  53. M6(){ TPUT 10 3; $e "Сдвигает все форматированные значения даты / времени на величину \033[32m -globalTimeShift SHIFT \033[0m";}
  54. M7(){ TPUT 11 3; $e "Добавить функции из указанного модуля МОДУЛЯ \033[32m -use MODULE \033[0m";}
  55. #
  56. M8(){ TPUT 13 3; $e "Примечание \033[32m note \033[0m";}
  57. M9(){ TPUT 14 3; $e "Установите параметр ExifTool API \033[32m -api OPT[[^]=[VAL]] \033[0m";}
  58. M10(){ TPUT 15 3; $e "Bсе аргументы, следующие за опцией, являются общими для всех команд при -execute \033[32m -common_args \033[0m";}
  59. M11(){ TPUT 16 3; $e "Загрузить указанный файл конфигурации вместо файла по умолчанию «.ExifTool_config» \033[32m -config CFGFILE \033[0m";}
  60. M12(){ TPUT 17 3; $e "Вывести ТЕКСТ на стандартный вывод (-echo или -echo1) или на стандартный вывод (-echo2)\033[32m -echo[NUM] TEXT \033[0m";}
  61. M13(){ TPUT 18 3; $e "Сохраните имена файлов с ошибками \033[32m -efile[NUM][!] ERRFILE \033[0m";}
  62. M14(){ TPUT 19 3; $e "Выполнить команду для всех аргументов до этого момента в командной строке \033[32m -execute[NUM] \033[0m";}
  63. M15(){ TPUT 20 3; $e "Укажите другой исходный файл для обработки на основе имени исходного ФАЙЛА \033[32m -srcfile FMT \033[0m";}
  64. M16(){ TPUT 21 3; $e "Если FLAG равен 1 или True, exiftool продолжает чтение из - @ ARGFILE \033[32m -stay_open FLAG \033[0m";}
  65. M17(){ TPUT 22 3; $e "Установите пользовательский параметр \033[32m -userParam PARAM[[^]=[VAL]] \033[0m";}
  66. M18(){ TPUT 23 3; $e "Расширенная функция форматирования \033[32m Advanced formatting feature \033[0m";}
  67. #
  68. M19(){ TPUT 25 3; $e "Выход \033[32m EXIT \033[0m";}
  69. LM=19
  70. MENU(){ for each in $(seq 0 $LM);do M${each};done;}
  71. POS(){ if [[ $cur == up ]];then ((i--));fi
  72. if [[ $cur == dn ]];then ((i++));fi
  73. if [[ $i -lt 0 ]];then i=$LM;fi
  74. if [[ $i -gt $LM ]];then i=0;fi;}
  75. REFRESH(){ after=$((i+1)); before=$((i-1))
  76. if [[ $before -lt 0 ]];then before=$LM;fi
  77. if [[ $after -gt $LM ]];then after=0;fi
  78. if [[ $j -lt $i ]];then UNMARK;M$before;else UNMARK;M$after;fi
  79. if [[ $after -eq 0 ]] || [ $before -eq $LM ];then
  80. UNMARK; M$before; M$after;fi;j=$i;UNMARK;M$before;M$after;}
  81. INIT(){ R;HEAD;FOOT;MENU;}
  82. SC(){ REFRESH;MARK;$S;$b;cur=`ARROW`;}
  83. # Функция возвращения в меню
  84. ES(){ MARK;$e " ENTER = main menu ";$b;read;INIT;};INIT
  85. while [[ "$O" != " " ]]; do case $i in
  86. 0) S=M0;SC;if [[ $cur == enter ]];then R;echo "
  87. Прочитать аргументы командной строки из указанного файла. Файл содержит по одному аргументу на строку (НЕ по одному параметру на строку - для некоторых параметров
  88. требуется дополнительные аргументы, причем все аргументы должны быть помещены в отдельные строки). Пустые строки и строки, начинающиеся с \"#\", игнорируются (если
  89. они не начинаются с \"# [CSTR]\", и в этом случае остальная часть строки обрабатывается как строка C, что позволяет использовать стандартные
  90. escape-последовательности C, такие как \" \\ n\" для новой строки). белый пробел в начале строки удаляется. Обычная обработка аргументов оболочкой не выполняется,
  91. что, среди прочего, означает, что аргументы должны не заключаться в кавычки, а пробелы обрабатываются как любой другой символ. ARGFILE может существовать
  92. относительно текущего каталога или каталога exiftool если не указан абсолютный путь.
  93. Например, следующий ARGFILE установит для параметра Copyright значение «Copyright YYYY, Phil Harvey», где «YYYY» - год CreateDate:
  94. -d
  95. % Y
  96. -copyright <Copyright \$ createdate, Фил Харви
  97. Аргументы в ARGFILE ведут себя точно так же, как если бы они были введены в месте, где указан параметр - @ в командной строке, за исключением того, что Параметры
  98. -config и -common_args нельзя использовать в ARGFILE.
  99. ";ES;fi;;
  100. 1) S=M1;SC;if [[ $cur == enter ]];then R;echo " Сделайте паузу с сообщением «- нажмите любую клавишу -» или «- нажмите RETURN -» (в зависимости от вашей системы) перед завершением. Эта опция используется для
  101. предотвращения окно команд не закрывается при запуске в качестве приложения Windows с перетаскиванием.";ES;fi;;
  102. 2) S=M2;SC;if [[ $cur == enter ]];then R;echo "
  103. Распечатать список:
  104. всех допустимых имен тегов (-list),
  105. всех доступных для записи имен тегов (-listw),
  106. всех поддерживаемых расширений файлов (-listf),
  107. всех распознанных расширений файлов (-listr),
  108. все расширения файлов с возможностью записи (-listwf),
  109. все группы тегов [в указанном семействе] (-listg [NUM]),
  110. все удаляемые группы тегов (-listd) или XML база данных деталей тегов, включая языковые переводы (-listx).
  111. За параметрами -list, -listw и -listx может следовать дополнительный аргумент форма «-GROUP: All» для перечисления только тегов в определенной группе,
  112. где «GROUP» - это одно или несколько имен групп семейства 0–2 (за исключением групп EXIF ​​IFD), разделенных двоеточиями. С -listg можно указать NUM для указания
  113. семейства группы, в противном случае предполагается семейство 0. Опцию -l можно комбинировать с -listf, -listr или -listwf, чтобы добавить описания файлов в список.
  114. Опцию -lang можно комбинировать с -listx для вывода описаний на одном языке.
  115. Вот некоторые примеры:
  116. -list # перечислить все имена тегов
  117. -list -EXIF: All # перечислить все теги EXIF
  118. -list -xmp: time: all # перечислить все теги XMP, относящиеся ко времени
  119. -listw -XMP-dc: All # перечислить все доступные для записи теги XMP-dc
  120. -listf # перечислить все поддерживаемые расширения файлов
  121. -listr # перечислить все распознанные расширения файлов
  122. -listwf # перечислить все доступные для записи расширения файлов
  123. -listg1 # перечислить все группы в семье 1
  124. -listd # перечислить все удаляемые группы
  125. -listx -EXIF: Все # список базы данных тегов EXIF ​​в формате XML
  126. -listx -XMP: All -s # перечислить короткую XML-базу данных тегов XMP
  127. В сочетании с -listx опция -s сокращает вывод, опуская описания и значения (как в последнем примере выше), а -f добавляет атрибут 'flags', если применимо.
  128. Флаги отформатированы как список следующих возможных значений, разделенных запятыми: Avoid, Binary, List, Mandatory, Постоянный, Защищенный, Неизвестный и
  129. Небезопасный (см. Документацию по именам тегов). Для тегов XMP List тип списка (Alt, Bag или Seq) добавляется к флагам, а теги плоской структуры обозначаются
  130. флажком Flattened. Обратите внимание, что ни одна из опций -list не требует ввода ФАЙЛ.
  131. ";ES;fi;;
  132. 3) S=M3;SC;if [[ $cur == enter ]];then R;echo " Вывести номер версии exiftool. Параметр -v может быть добавлен для вывода дополнительной системной информации (см. Файл README полного дистрибутива для получения
  133. дополнительной информации подробности о дополнительных библиотеках) или -v2, чтобы также вывести список подключаемых каталогов Perl.";ES;fi;;
  134. 4) S=M4;SC;if [[ $cur == enter ]];then R;echo " Обозначает конец опций. Любые оставшиеся аргументы рассматриваются как имена файлов, даже если они начинаются с тире («-»).";ES;fi;;
  135. 5) S=M5;SC;if [[ $cur == enter ]];then R;echo "
  136. Изображения с геотегами из указанного файла журнала GPS-трека. Использование опции -geotag эквивалентно записи значения в тег «Geotag». Положение GPS
  137. интерполируется из трека во время, указанное значением, записанным в тег \"Geotime\". Если \"Geotime\" не указано, значение копируется из «DateTimeOriginal
  138. #» («#» добавляется для копирования неформатированного значения, избегая потенциальных конфликтов с параметром -d). Например, следующие двe команды эквивалентны:
  139. exiftool -geotag trk.log image.jpg
  140. exiftool -geotag trk.log \"-Geotime <DateTimeOriginal #\" image.jpg
  141. Когда значение «Geotime» преобразуется в UTC, используется часовой пояс локальной системы, если только значение даты / времени не содержит часовой пояс.
  142. Написание \"Geotime\" вызывает запись следующих тегов (при условии, что они могут быть вычислены из журнала треков и поддерживаются метаданными назначения формат):
  143. GPSLatitude, GPSLatitudeRef, GPSLongitude, GPSLongitudeRef, GPSAltitude, GPSAltitudeRef, GPSDateStamp, GPSTimeStamp, GPSDateTime, GPSTrack, GPSTrackRef, GPSSpeed,
  144. GPSSpeedRef, GPSImgDirection, GPSImgDirectionRef, GPSPitch, GPSRoll, AmbientTemperature и CameraElevationAngle. По умолчанию, теги создаются в EXIF ​​и обновляются в
  145. XMP, только если они уже существуют. Однако \"EXIF: Geotime\" или \"XMP: Geotime\" можно указать для записи только EXIF или теги XMP соответственно. Обратите
  146. внимание, что GPSPitch и GPSRoll нестандартны, и для их записи требуются пользовательские теги.
  147. Тег «Geosync» может использоваться для указания поправки времени, которая применяется к каждому значению «Geotime» для синхронизации со временем GPS. Например,
  148. следующая команда компенсирует время изображения, которое отстает от GPS на 1 минуту и ​​20 секунд:
  149. exiftool -geosync = + 1: 20 -geotag a.log DIR
  150. Усовершенствованные функции «Geosync» позволяют производить линейную коррекцию временного дрейфа и синхронизацию с ранее отмеченными геотегами изображениями. См.
  151. \"Geotag.html\" полностью. Дистрибутив ExifTool для получения дополнительной информации.
  152. Для объединения данных журнала треков GPS можно использовать несколько параметров -geotag. Кроме того, опция -geotag может использоваться для загрузки нескольких
  153. файлов журнала треков с помощью используя подстановочные знаки в имени TRKFILE, но обратите внимание, что в этом случае TRKFILE необходимо заключить в кавычки в
  154. большинстве систем (за заметным исключением Windows), чтобы предотвратить расширение имени файла. Например:
  155. exiftool -geotag \"TRACKDIR / *. log\" IMAGEDIR
  156. В настоящее время поддерживаются следующие форматы файлов треков: GPX, NMEA RMC / GGA / GLL, KML, IGC, Garmin XML и TCX, Magellan PMGNTRK, Honeywell PTNTHPR,
  157. Bramor gEO, Файлы Winplus Beacon TXT и GPS / IMU CSV. Примеры см. В разделе «ПРИМЕРЫ ГЕОТАГНИРОВАНИЯ». Также см. «Geotag.html» в полном дистрибутиве ExifTool и
  158. Image :: ExifTool Options для получения более подробной информации и информации о параметрах конфигурации геотегов.
  159. ";ES;fi;;
  160. 6) S=M6;SC;if [[ $cur == enter ]];then R;echo "
  161. Сдвигает все форматированные значения даты / времени на указанную величину при чтении. Не применяется к неформатированному (-n) выводу. SHIFT имеет ту же форму,
  162. что и сдвиг даты / времени при записи (подробности см. в Image :: ExifTool :: Shift.pl), при этом отрицательный сдвиг обозначается знаком минус (\"-\") в начало
  163. строки SHIFT. Например: # вернуть все дату / время со сдвигом на 1 час назад
  164. exiftool -globalTimeShift -1 -time: все a.jpg
  165. # задаем имя файла из сдвинутой CreateDate (-1 день) для
  166. # все изображения в каталоге
  167. exiftool \"-filename <createdate\" -globaltimeshift \"-0: 0: 1 0: 0: 0\" \\
  168. -d% Y% m% d-% H% M% S. %% e dir
  169. ";ES;fi;;
  170. 7) S=M7;SC;if [[ $cur == enter ]];then R;echo " Добавить функции из указанного модуля МОДУЛЯ. В настоящее время модуль MWG - единственный подключаемый модуль, распространяемый с exiftool. Этот модуль добавляет
  171. поддержка чтения / записи тегов в соответствии с рекомендациями Рабочей группы по метаданным. Для удобства предполагается \"-use MWG\", если группа \"MWG\" указана
  172. для любой тег в командной строке. Дополнительную информацию см. В документации по тегам MWG. Обратите внимание, что этот параметр необратим и действует до тех пор,
  173. пока приложение завершает работу даже при использовании параметра «-execute».";ES;fi;;
  174. #==================================================================================================================================================================
  175. 8) S=M8;SC;if [[ $cur == enter ]];then R;echo " Среди прочего, расширенные параметры позволяют выполнять сложную обработку с помощью одной команды без необходимос>
  176. особенно полезен для таких реализаций, как приложения Windows с перетаскиванием. Эти параметры также можно использовать для повышения производительности в
  177. многоцелевых системах передать обработку, уменьшив накладные расходы, необходимые для загрузки exiftool при каждом вызове.";ES;fi;;
  178. 9) S=M9;SC;if [[ $cur == enter ]];then R;echo " Установите параметр ExifTool API. OPT - это имя опции API. Значение опции устанавливается на 1, если = VAL опущено>
  179. устанавливается на undef, если используется \"=\", или пустая строка с \"^ =\". См. В разделе Параметры Image :: ExifTool список доступных параметров API.
  180. Это отменяет набор параметров API через файл конфигурации.";ES;fi;;
  181. 10) S=M10;SC;if [[ $cur == enter ]];then R;echo " Указывает, что все аргументы, следующие за этой опцией, являются общими для всех выполняемых команд при использова>
  182. являются только параметры, которые нельзя использовать внутри - @ ARGFILE. Обратите внимание, что по определению эта опция и ее аргументы ДОЛЖНЫ идти после всех
  183. других опций в командная строка.";ES;fi;;
  184. 11) S=M11;SC;if [[ $cur == enter ]];then R;echo " Загрузить указанный файл конфигурации вместо файла по умолчанию «.ExifTool_config». Если используется, этот параме>
  185. аргументами команды строка и применяется ко всем командам -execute'd. CFGFILE должен существовать относительно текущего рабочего каталога или каталога приложения
  186. exiftool если не указан абсолютный путь. Загрузку файла конфигурации по умолчанию можно отключить, установив для CFGFILE пустую строку (например, \"\"). Видеть
  187. https://exiftool.org/config.html> и config_files/example.config в полном дистрибутиве ExifTool для получения подробной информации о синтаксисе файла конфигурации.";ES;fi;;
  188. 12) S=M12;SC;if [[ $cur == enter ]];then R;echo " Вывести ТЕКСТ на стандартный вывод (-echo или -echo1) или на стандартный вывод (-echo2). Текст выводится по мере а>
  189. входных файлов. NUM также может быть 3 или 4 для вывода текста (в stdout или stderr соответственно) после завершения обработки.";ES;fi;;
  190. 13) S=M13;SC;if [[ $cur == enter ]];then R;echo " Сохраните имена файлов с ошибками (ЧИСЛО отсутствует или 1), файлов, которые не были изменены (ЧИСЛО равно 2), фай>
  191. (ЧИСЛО равно 4), или любых их комбинация (суммируя NUM, например, -efile3 имеет одинаковые параметры -efile и -efile2 с одним и тем же ERRFILE). По умолчанию файл
  192. имена добавляются к любому существующему ERRFILE, но ERRFILE перезаписывается, если к параметру добавляется восклицательный знак (например, -efile!). Сохраняет имя
  193. файла, указанного параметром -srcfile, если применимо.";ES;fi;;
  194. 14) S=M14;SC;if [[ $cur == enter ]];then R;echo " Выполнить команду для всех аргументов до этого момента в командной строке (плюс любые аргументы, указанные в -comm>
  195. выполнялись как отдельные командные строки (за исключением параметров -config и -use, которые остаются в силе для последующих команд). Позволяет выполнять несколько
  196. команд из одной командной строки. ЧИСЛО - необязательное число, которое отображается в сообщении \"{ready}\" при использовании -stay_open особенность.";ES;fi;;
  197. 15) S=M15;SC;if [[ $cur == enter ]];then R;echo " Укажите другой исходный файл для обработки на основе имени исходного ФАЙЛА. Это может быть полезно в некоторых осо>
  198. изображения предварительного просмотра или сопроводительные файлы. См. Описание синтаксиса FMT в параметре -w. Обратите внимание, что строки FMT имени файла для всех
  199. параметров на основе исходного ФАЙЛА, указанного в командной строке, а не имени исходного файла, указанного параметром -srcfile.
  200. Например, чтобы скопировать метаданные из файлов NEF в соответствующие превью JPG в каталоге, где могут существовать другие изображения JPG:
  201. exiftool -ext nef -tagsfromfile @ -srcfile% d% f.jpg каталог
  202. Если указано более одного параметра -srcfile, файлы проверяются по порядку, и обрабатывается первый существующий исходный файл. Если ни один из источников файлы
  203. уже существуют, тогда exiftool использует первый указанный -srcfile.
  204. FMT «@» может использоваться для представления исходного ФАЙЛА, что может быть полезно при указании нескольких параметров -srcfile (например, для возврата к
  205. обработке исходный ФАЙЛ, если нет сопроводительной книги).
  206. Когда используется этот параметр, создаются два специальных тега UserParam (OriginalFileName и OriginalDirectory), чтобы разрешить доступ к исходному имени ФАЙЛА.
  207. и каталог.";ES;fi;;
  208. 16) S=M16;SC;if [[ $cur == enter ]];then R;echo "
  209. Если FLAG равен 1 или True, exiftool продолжает чтение из - @ ARGFILE даже после достижения конца файла. Эта функция позволяет звонить приложения для
  210. предварительной загрузки exiftool, что позволяет избежать накладных расходов на загрузку exiftool для каждой команды. Порядок действий следующий:
  211. 1) Выполните «exiftool -stay_open True - @ ARGFILE», где ARGFILE - это имя существующего (возможно, пустого) файла аргументов или «-» для передачи аргументов по
  212. конвейеру со стандартного ввода.
  213. 2) Запишите аргументы командной строки exiftool в ARGFILE, по одному аргументу на строку (подробности см. В параметре - @).
  214. 3) Запишите «-execute \\ n» в ARGFILE, где «\\ n» представляет собой последовательность новой строки. (Примечание: вам может потребоваться очистить буферы записи
  215. здесь, если вы используете буферизованный ExifTool затем выполнит команду с аргументами, полученными до этого момента, отправит сообщение \"{ready}\" на стандартный
  216. вывод, когда будет выполнено (если только используется параметр -q или -T), и продолжайте попытки чтения аргументов для следующей команды из ARGFILE. Чтобы помочь в
  217. синхронизации команды / ответа, любое число, добавленное к параметру «-execute», отображается в сообщении «{готово}». Например, «-execute613» дает «{ready613}».
  218. 4) Повторите шаги 2 и 3 для каждой команды.
  219. 5) По завершении напишите \"-stay_open\\nFalse\\n\" в ARGFILE. Это заставит exiftool обработать все оставшиеся аргументы командной строки, а затем завершить
  220. работу в обычном режиме. Входной ARGFILE можно изменить в любое время до шага 5 выше, записав следующие строки в текущий открытый ARGFILE:
  221. -stay_open
  222. True
  223. -@
  224. NEWARGFILE
  225. Это приводит к тому, что ARGFILE закрывается, а NEWARGFILE остается открытым. (Без -stay_open здесь exiftool вернулся бы к чтению аргументов из ARGFILE после
  226. достижения конца NEWARGFILE.)
  227. Примечание. При записи аргументов в файл на диске существует задержка до 0,01 секунды после записи «-execute \\ n», прежде чем exiftool начнет обрабатывать
  228. команда. Этой задержки можно избежать, отправив сигнал CONT процессу exiftool сразу после записи «-execute \\ n». (Нет связанного задержка при записи аргументов
  229. через конвейер с «- @ -», поэтому сигнал не требуется при использовании этого метода.)
  230. ";ES;fi;;
  231. 17) S=M17;SC;if [[ $cur == enter ]];then R;echo " Установите пользовательский параметр. PARAM - произвольное имя параметра пользователя. Это интерфейс для параметра>
  232. документация) и предоставляет метод доступа к параметрам, определяемым пользователем, в аргументах опций -if и -p, как если бы они были любым другим тегом.
  233. Добавление хэш-тега (\"#\") к PARAM также приводит к извлечению параметра как обычного тега (в группе UserParam). Подобно параметру -api, значение параметра
  234. устанавливается в 1, если = VAL опущено, undef, если только VAL опущен с «=», или пустая строка, если VAL опущен с «^ =»
  235. exiftool -p '\$test from $filename' -userparam test=Hello FILE";ES;fi;;
  236. 18) S=M18;SC;if [[ $cur == enter ]];then R;echo "
  237. Расширенная функция форматирования позволяет изменять значение любого тега, интерполированного в аргументе параметра -if или -p, или перенаправлении -tagsFromFile.
  238. нить Имена тегов в этих строках начинаются с символа «\$», и к значению тега можно применить произвольное выражение Perl, поместив фигурные скобки вокруг имени тега
  239. и вставка выражения после имени, разделенного точкой с запятой (например, «\$ {TAG; EXPR}»). Выражение действует на значение тега через входную переменную по
  240. умолчанию (\$ _) и имеет доступ к полному API ExifTool через текущий объект ExifTool (\$ self) и ключ тега (\$ tag). Это может содержать любой допустимый код Perl,
  241. включая операции перевода (\"tr ///\") и подстановки (\"s ///\"), но учтите, что фигурные скобки внутри выражения должны быть сбалансированный. В приведенном ниже
  242. примере печатается Make Camera с пробелами, переведенными в подчеркивания, и несколькими последовательными подчеркиваниями, замененными одним подчеркните:
  243. exiftool -p '\${make;tr/ /_/;s/__+/_/g}' image.jpg
  244. После имени тега может быть добавлен символ «@», чтобы выражение действовало на отдельные элементы списка для тегов типа списка, что упрощает обработку списка.
  245. Установите \$ _ на undef, чтобы удалить элемент из списка. Например, следующая команда возвращает все темы, не содержащие строку «xxx»:
  246. exiftool -p '\${subject@;$_=undef if /xxx/}' image.jpg
  247. Выражение по умолчанию \"tr (/ \\? *: |\" <> \ 0) () d \"предполагается, если выражение пустое (например,\" \$ {TAG;} \"). Это удаляет символы / \? *: | <> и null
  248. от напечатанного значения. (Эти символы недопустимы в именах файлов Windows, поэтому эта функция полезна, если значения тегов используются в именах файлов.)
  249. ";ES;fi;;
  250. #==================================================================================================================================================================
  251. 19) S=M19;SC;if [[ $cur == enter ]];then R;clear;exit 0;fi;;
  252. esac;POS;done