Описание команды


exbns

Извлечение с преобразованием и сохранение различной информации содержимого бинарных файлов.

exbns=%L,%WL||LISTF<>||PS<>||FOLDC<>||FOLDM<>||LISTC<>||FLST<>||cliplist||$var_aa||$GLOBALNAME||Path, ||ending<>, ||exbyn<>, ||SeriesParam, ||#ASrting, ||#ZString, ||stream<>, ||<text>или[text], ||clpget, ||progres<>, ||Dialogs, ||<srlist>, ||upd<>, ||isbinary<>

Параметры:

1-й обязательный параметр. Может иметь несколько вариантов:
%L,
%WL
Список выделенных текстовых файлов.
Также может использоваться путь к файлу списка полных путей файлов %P%N. см. Дополнение №7 или с:\List.txt
LISTF<>Список заданных объектов. см. Дополнение №22.
PS<>Список объектов каталога. см. Дополнение №22.
FOLDC<>Список объектов содержимого каталогов. см. Дополнение №22.
FOLDM<>Список выделенных объектов и всех объектов в подпапках. см. Дополнение №22.
LISTC<>Список объектов из выделенных без дубликатов. см. Дополнение №22.
FLST<>Смешанные списки объектов по заданному списку. см. Дополнение №22.
cliplistСписок полных путей объектов из буфера обмена.
$var_aaМассив. Переменная $var_a... - массив путей, созданный в команде exect.
$GLOBALNAMEМассив. Список путей глобальной переменной см. Дополнение №23.
2-й обязательный параметр.
PathПуть. Параметр Path(!!Flag!!Name.Ext!!Insert). Подпараметры разделяются символами !!
  Может быть от 1-го (обязательного) до 4-х подпараметров.
Path//Flag(//Name.Ext//Insert). Подпараметры разделяются символами // (рекомендуемый).
  Может быть от 2-х (обязательных) до 4-х подпараметров, где:
  Path - путь назначения, где создавать файл.
  Flag :
    0 - не перезаписывать имеющиеся объекты. Добавление счётчика. (по умолчанию).
    1 - перезаписывать имеющиеся объекты.
    3 - добавление счётчика к целевому пути, если он существует.
    4 - пропустить при совпадении имени объекта.
  Name.Ext - имя и расширение создаваемого файла.
  Insert - добавление к базовому имени.
    Если Insert начинается с ** то последующая строка заменяет расширение.
    Если Insert начинается с ++ то последующая строка добавляет расширение.
Если Path=x, Name=x, Ext=x , то путь/имя/расширение берётся из пути оригинального файла.
Может использоваться подпараметр rndm - информация случайных данных см. Дополнение №30
Дополнительные параметры:
ending<>Окончание. Параметр ending<Number> , где Number:
  0 - не добавлять окончание к базовому имени.
  1 - добавлять (по умолчанию). Окончание берётся из TCIMG.ini из секции [Setting] из ключа ExtractDelimeter.
exbyn<>Шаблоны поиска. Параметр exbyn<Name> позволяет настроить поиск/замену/удаление из строки бинарных данных. Name - имя шаблона, настраивается в TCIMG.ini в секции [Bynary].
SeriesParamПреобразование строки. Серия параметров, изменяющих текстовую информацию см. Дополнение №24.
#ASrting, ||#ZStringВставка. Вставка в начало и/или в конец после обработки всех параметров. см. Дополнение №24.
stream<>Запуск. Параметр stream<Number>, где Number:
  0 - обычный запуск в том же потоке.
  1 - запуск в нескольких копиях утилиты.
    • в некоторых случаях может ускорить процесс обработки.
    • при этом информация в глобальные переменные не выводится.
<text>
или
[text]
Получение информации из файла с регулярными выражениями.
  Описание
<text=FileText//RegExp1//Replace1//RegExp2//Replace2//...//RegExpN//ReplaceN>, (рекомендуется)
<text=FileText!!RegExp1!!Replace1!!RegExp2!!Replace2!!...!!RegExpN!!ReplaceN>, где:
  FileText - путь к текстовому файлу.
  RegExp - что искать.
  Replace - чем заменять.
Может быть несколько пар RegExp и Replace, при этом информация складывается последовательно.
Угловые скобки внутри параметра необходимо заменять соответствующими двойными фигурными < на {{ и > на }}.

Так же поддерживается формат <text=FileText//??Name1,Name2,...,NameN>, где:
  Name ... - имена ключей из секции [FormatUser] в TCIMG.ini, в которых прописаны шаблоны для поиска и замены.
clpgetИз буфера обмена. Параметр clpget может использоваться совместно с другими параметрами, clpget будет заменён содержимым буфера обмена.
progres<>Прогресс бар. Параметр progres<> - если указан, то при операции будет запущен прогресс бар.
Учитывается ключ MsBoxAtTheCompletion в TCIMG.ini в секции [Setting].
DialogsДиалоги. см. Дополнение №18
  Описание
Различные параметры диалогов.
  [input] - диалог ввода информации в InputBox.
  [richinput] - диалог ввода информации в RichInputBox.
  [combo] - диалог выбора информации в ComboBox.
  [group] - диалог выбора информации в GroupBox.
  [check] - диалог выбора информации в CheckBox.
  [edits] - диалог выбора информации в EditBox.
  [sfold] - выбор каталога.
  [zfold] - выбор каталогов.
  [sopen] - выбор файла для открытия.
  [ssave] - выбор файла для сохранения.
  [sicon] - диалог просмотра и выбора значка.
  [msgbx] - окно сообщения MsgBox.
  [updwn] - диалог выбора числовой информации UpDown.
  [image] - диалог выбора изображения.
  [elect] - диалог выбора файлов и папок.
...и другие диалоги.
<srlist>Поиск и замена из файла.
  Описание
Параметр <srlist=FilePath(|Section|Mode|Flag|Registr|Sort|Concurrence|SymbolDelim|Read)>, где:
  FilePath - путь к файлу списка (обязательный параметр, остальные необязательные).
    В списке должны быть прописаны пары поиска и замены, разделённые "=" .
    Каждая пара с новой строки.
    Если замена не прописана, то происходит удаление строки поиска.
    Так же в поиске и замене можно вставлять символы с помощью функций Autoit Chr() и ChrW(),
      которые заменяются соответствующими символами.
    Так же в поиске и замене можно использовать тег @CRLF означающий перенос строки.
  $GLOBALNAME2D - может использоваться для передачи данных 2D массив из 2-х колонок, в котором:
    в 0-й колонке в ячейках данные для поиска.
    в 1-й колонке в соответствующих ячейках данные для замены.
Пример записи:

найти=заменить
привет=пока
строка ChrW(8618) =
@CRLFнайти@CRLF=@CRLFзаменить@CRLF

  Section - если в файле пары прописаны в секции, то указывается имя секции (в ином случае прописывается символ #) (по умолчанию без секции).
  Mode - режим обработки:
    0 - обычный (по умолчанию).
    1 - двойная обработка (это гораздо медленнее, но предотвращает пересечения между строками замены).
  Flag - подготовка списка:
    1 - не производить предварительную очистку.
    2 - удалить комментарии в секции списка "поиска и замен" (по умолчанию, если указана секция).
  Registr - регистр:
    0 - замена производится без учёта регистра.
    1 - с учётом регистра (по умолчанию).
  Sort - сортировка:
    0 - не сортировать (по умолчанию).
    1 - сортировать строки поиска по длине, по убыванию. (Это позволяет заменять последовательно: длинные строки, затем короткие...).
  Concurrence - совпадение:
    0 - поиск любого вхождения в строку (по умолчанию).
    1 - поиск точного совпадения со всем текстом. (Только при точном совпадении происходит замена).
    2 - поиск точного совпадения со строкой.
    3 - поиск точного совпадения со строкой слева.
    4 - поиск точного совпадения со строкой справа.
  SymbolDelim - символ, разделяющий пары поиска и замены.
    По умолчанию символ "="
    Так же можно вставлять символы с помощью функций Autoit Chr() и ChrW(), которые заменяются соответствующими символами.
  Read
    0 - информация файла или переменной считывается один раз, запоминается для дальнейшего использования (по умолчанию).
    1 - информация файла или переменной считывается каждый раз как только встретится параметр.

Можно воспользоваться аналогом ?Q
upd<>Обновление панели.
  Описание
Параметр upd<Number>, где Number - значение обновления панели(ей) Total Commander:
  1 - обновить активную панель.
  2 - обновить обе панели, вернуться в активную.
  3 - обновить другую панель, вернуться в активную.
  4 - обновить активную панель, перейти в другую.
  5 - обновить другую панель, остаться в другой.
  6 - обновить обе панели, остаться в другой.
  7 - не обновлять (по умолчанию, т.е. если параметр не прописан, то панели не обновляются).
isbinary<>Проверка. Параметр isbinary<Number> позволяет проверить файл бинарный он или текстовый. Если текстовый, то такой файл не попадает на обработку...
  Number
    0 - не проверять (по умолчанию).
    1 - проверять.
При большом количестве обрабатываемых файлов параметр может замедлить работу.

Примечания:

Команда имеет возможность передавать другим командам информацию через именные глобальные переменные. см. Дополнение №23

Имя переменнойОписание
GLOBALEXBNS0массив входных данных (список исходных путей объектов)
GLOBALEXBNSмассив выходных данных (список путей файлов с извлечённой информацией и путей объектов из которых она не была извлечена)
GLOBALEXBNS1массив файлов (список путей файлов с извлечённой информацией)
GLOBALEXBNS2массив объектов (список путей объектов из которых информация не была извлечена)
GLOBALEXBNS3массив файлов (список путей объектов из которых информация была извлечена)

Аналог команды для одного объекта exbnf

См. также:

exbnf, joinb, joinf, joinz, maskx, maskz, reszf, reszs, sdupl, splis, split

Примеры:
 Как создать кнопку?

exbns=%WL||"%t"//1//x.jpg||exbyn<JPG>||stream<1>||progres<> ;; извлечь в другую панель из mp3 файлов обложки именем jpg файлов

exbns=%WL||"%T"//1||?L2||^^EFBBBF0D0A||ending<0>||upd<3> ;; добавить в начало выделенных файлов заданные бинарные данные и сохранить в другую панель заменяя файлы, если они существуют

exbns=%WL||:://0//x.jpg||exbyn<JPEG>||ending<0>||progres<>||upd<3> ;; восстановить заголовок "битых" выделенных jpg файлов

exbns=FOLDC<%WL//1//1//mp3>||:://0//About.jpg||exbyn<JPG>||stream<1>||progres<> ;; извлечь из mp3 файлов обложки jpg именем About внутри выделенных папок

exbns=FOLDC<%WL//1//1//mp3>||:://1//x.jpg||exbyn<JPG>||stream<1>||progres<> ;; извлечь из mp3 файлов обложки jpg именем файлов внутри выделенных папок

global exbns=%WL||:://0//x.jpg||exbyn<JPEG>||ending<0>||progres<>||upd<3> GLOBALEXBNS0<a> GLOBALEXBNS<a> GLOBALEXBNS1<a> GLOBALEXBNS2<a> GLOBALEXBNS3<a> ;; восстановить заголовок "битых" выделенных jpg файлов и записать выходные данные в глобальные переменные

imgpr=1 slist=%WL <FOR> 1 <TO> GLOBALSLIST<0> exbns=PS<GLOBALSLIST<:INDEX:>//1//-1//mp3//0//0//1//1>||:://0//About.jpg||exbyn<JPG> <NEXT> ;; извлечь в выделенных папках из 1-го mp3 файла обложку jpg и сохранить внутри папки именем About.jpg

tempxx start=7-ZIP||x||-o$f254\||%P%N||&&hide||&&wait slist=PS<$f254//1//0//&&(?:\d+)> exbns=$GLOBALSLIST||:://0//x.jpg||?L26||ending<0> imgth=$GLOBALEXBNS1 ;; просмотреть эскизы файла Thumbs.db под курсором

tempxx start=7-ZIP||x||-o$f254\||%P%N||&&hide||&&wait slist=PS<$f254//1//0//&&(?:\d+)> GLOBALSLIST<a> exbns=$GLOBALSLIST||:://0//x.jpg||?L26||progres<>||ending<0> GLOBALEXBNS1<a> ;; распаковать во временную папку содержимое файла Thumbs.db, привести к формату JPG нумерованные файлы (а именно удалить сначала бинарного файла 26 символов (12 байт + начальные 0x))


© Аверин Андрей для Total Commander Image  Averin-And@yandex.ru