Основные вопросы по TCIMG


Вступление
  1. Для чего предназначена утилита TCIMG?
  2. С чего начать?
  3. Сложно ли освоить TCIMG?
  4. Как создать кнопку утилиты с параметрами в Total Commander?
  5. Как обмениваться кнопками Total Commander?
  6. Вызов кнопки утилиты выдаёт ошибку?
  7. Структура командной строки утилиты?
  8. Надо ли строку параметров обрамлять кавычками?
  9. Среди примеров нет нужного, можно ли добавить свою команду?
10. Есть ли поддержка других языков в диалогах утилиты?
11. Антивирус удаляет TCIMG.exe?..
12. Как команде утилиты присвоить комбинацию горячих клавиш в Total Commander?
13. Можно ли использовать команды утилиты не только в Total Commander?
14. Как правильно обновлять утилиту?
15. Как сохранять свои настройки при обновлении?
16. Надо ли регистрировать утилиту или файлы утилиты в системе?
17. Бесплатна ли утилита?
18. Можно ли использовать утилиту в сборках и проектах?
19. Работает ли утилита на более ранних версиях Total Commander?
20. Можно ли создавать объекты, относительно папки утилиты?
21. Можно ли в командной строке Total Commander указывать переменные утилиты?
22. Как узнать какие пути попадают в командную строку при параметрах %t, %p...?
23. Если в именах файлов встречаются умляуты, то команды не работают - это поправимо?
24. Можно ли запускать утилиту с заданными параметрами не прибегая к помощи TC, ярлыков...?
25. При длинных именах файлов некоторые команды не срабатывают, как это можно исправить?
26. Не работает копирование, если обрабатываются объекты в папке %AppData%, как исправить?
27. Не работают ряд команд с объектами, в имени которых имеются несколько восклицательных знаков, как исправить?



 Вступление

В течении нескольких лет написания массы скриптов .vbs автоматизации для Total Commander появилась идея создать утилиту, которая включала бы в себя большинство из них. В начале это было всего десяток параметров, направленных на вызов команд TC и эмуляцию клавиатурных нажатий, но чем дальше, тем больше - сейчас утилита включает в себя сотни команд и параметров, позволяющих решать разнообразные задачи. Более того, команды утилиты могут использоваться и в других программах и приложениях (AkelPad, скриптинг, ...).
Для меня есть большие плюсы в том, что "всё в одном":
- Не приходится писать по каждому поводу новый скрипт — стоит включить тот или иной параметр и готово.
- В одном месте находится приличная библиотека (более 3600 проверенных функций) и при добавлении новой команды или расширении функционала не требуется дублировать одно и тоже, как в отдельных скриптах.
- Так как в большинстве команд функции взаимосвязаны, то и исправление ошибок влияет на стабильность других команд и параметров.
- В одной строке могут быть задействованы совершенно разные методы и команды, чем увеличивается потенциал и возможности утилиты.
- Ряд команд имеет возможность создавать/запоминать/сохранять/преобразовывать начальные/конечные списки данных, передавать их другим командам и решать довольно сложные задачи.
- Всё это позволяет экономить массу места и времени...
- и мн. др.
Кроме того, по сравнению с vbs, Autoit гораздо мощнее и эффективнее, взять, к примеру, действия с буфером обмена, регулярными выражениями, системой, библиотеками, ресурсами, классами окон, интернетом, кодировкой, INI файлами, изображениями, архивами...
Хотя утилита создавалась для себя, думаю и Вам она будет полезной и поможет упростить работу.
Ниже будет рассмотрены основные вопросы, связанные с утилитой.

0. Любая автоматизация требует тестирования и проверки. Используя функционал утилиты, проверьте его на тестовых файлах и папках. После того, как Вы убедитесь, что всё работает как надо, используйте на реальных объектах. Не забывайте дублировать и сохранять информацию!!!

  1. Для чего предназначена утилита TCIMG?

TCIMG предназначена для общих и индивидуальных задач автоматизации Total Commander, программ, приложений и операционной системы. Наверняка у каждого, кто работает на компьютере, возникали монотонные задачи (распределение файлов, переименование фотографий, создание папок, получение информации...) на которые требовались часы, а то и дни. Файловый менеджер упрощает эту работу, а утилита расширяет возможности программы и позволяет настроить почти любую задачу в один клик.

  2. С чего начать?

1) Распакуйте скачанный архив утилиты в любую папку. Рекомендуется, чтобы эта папка была внутри папки Вашего Total Commander, тогда можно будет использовать переменные внутреннего окружения Total Commander (см. Дополнение №13) и при переносе файлового менеджера на флешку или на другой компьютер все настроенные кнопки будут работоспособны.
Так же можно скопировать все файлы архива в корень Total Commander (рядом с TOTALCMD.exe). Во всех примерах используется именно этот путь к утилите %COMMANDER_PATH%\TCIMG.exe
2) Создайте кнопку на панели инструментов и настройте её с нужным Вам функционалом. Ниже есть описание как это сделать.

  3. Сложно ли освоить TCIMG?

Не сложнее обычного. В справке находится 12061 примеров и они постоянно пополняются с новой версией. Если у Вас есть задача, то перейдя в соответствующий раздел справки, в первую очередь стоит посмотреть примеры - наверняка ответ там найдётся. Если нет, то по аналогии можно "собрать" свою строку команд и параметров.
Для тех, кто хочет "глубже" разобраться, то всё описано в справке. Только на первый взгляд кажется, что синтаксис сложноватый, я бы сказал не привычный. В любом случае, Вы всегда можете задать свой вопрос или дать совет на сайте в теме утилиты TCIMG

  4. Как создать кнопку утилиты с параметрами в Total Commander?

1) Удерживая левую кнопку мыши перетащите запускающий файл утилиты TCIMG.exe на свободное место панели инструментов Total Commander. Создастся кнопка.

2) Для изменения параметров нажмите правой кнопкой мыши на созданной кнопке, в появившемся контекстном меню нажмите пункт "Изменить":

3) В появившемся диалоге настроек:

изменить соответствующие поля:
  а) Команда: Рекомендуется убрать крайние кавычки вокруг пути утилиты, Total Commander их ставит автоматически (они необходимы, если в пути/имени есть пробелы).
  б) Параметры: В этом поле необходимо вставить строку параметров утилиты.
Возьмём из примеров строку:

copys=%L||"%t"//0 ;; копировать в другую панель выделенное, не заменяя имеющиеся элементы

В примерах параметры и описание отделяются " ;; " (пробел, 2 точки с запятой, пробел).
Вставляем левую часть в поле параметры.
  в) Путь запуска: Рекомендуется очистить.
  г) Файл значка: Значок можно поменять на любой другой, соответствующий задаче кнопки.
  д) Подсказка: Вставить описание к кнопке, в примерах утилиты это правая часть от " ;; "
В итоге получим следующие настройки и кнопку:

Для создания другой кнопки, можно скопировать созданную и вставить рядом. Далее изменить поле параметров.
Так же для создания кнопок из примеров справки Вы можете воспользоваться командой butup

  5. Как обмениваться кнопками Total Commander?

Нажать правой кнопкой мыши над созданной кнопке. В появившемся контекстном меню нажать "Копировать"

В буфер обмена запишется информация настроек кнопки в виде текста, который имеет структуру:

TOTALCMD#BAR#DATA
%COMMANDER_PATH%\TCIMG.exe
copys=%L||"%t"//0
Wcmicons.dll,1744
Копирование в другую панель выделенное, не заменяя имеющиеся элементы

-1

Текстом кнопки из буфера обмена можно обмениваться: выкладывать на сайте, передавать в сообщениях, сохранять и пересылать в виде текстового файла...
Чтобы вставить кнопку в виде текста на панель инструментов необходимо нажать правой кнопкой мыши на пустом месте (или между существующими кнопками). В появившемся контекстном меню нажать "Вставить" (если в буфере нет текста кнопки, то в контекстном меню не появится пункт "Вставить"):

Появится новая кнопка на панели инструментов:

Теперь остаётся изменить новую кнопку (как см. Выше), а именно:
- проверить путь к утилите. (он может быть отличным от Вашего)
- изменить значок. (значок может вообще не отображаться, т.к. у вас такой библиотеки/иконки нет)
- описание (если необходимо).
На сайте в теме "Кнопки для Total Commander" Вы можете найти готовые кнопки, распределённые по темам, где выложены тысячи текстовых кодов для вставки на панель инструментов.

  6. Вызов кнопки утилиты выдаёт ошибку?

Возможно появление нескольких видов ошибок:
а) Файл не найден:

Необходимо убедится в правильности вызова пути утилиты (в кнопке в поле "Команда").
б) Эта функция в архивах не работает:

Ряд команд не рассчитаны для работы при открытом архиве в файловой панели.
Остальным командам необходимо в начало командной строки добавить параметр TC %Z

%Zinfos=1||2 ;; отображение информации панелей Total Commander

в) Error:

Может быть несколько вариантов появления:
   - не правильно указаны параметры: (не хватает условий, не поставлен разделитель...).
   - не правильное условие использование (вместо файла указывается папка, нет необходимого выделения...).
   - ошибка в коде. Большая просьба по таким ошибкам сообщать в теме утилиты TCIMG или личными сообщениями, mail, ICQ... при этом желательно подробно указать условия использования и приложить кнопку (как см. Выше)
г) NOT FILE:

Сообщение о том, что в папке с утилитой не хватает обязательных для работы файлов

д) Function Not Realised! em_CommandTCIMG888

В ряде команд, связанных с Total Commander (к примеру tcprm) для вызова параметров создаётся временная команда [em_CommandTCIMG888] в файле %COMMANDER_PATH%\UserCmd.ini и затем запускается.
Ошибка означает, что Total Commander не смог найти эту команду - это может быть из-за:
  - не достаточно времени на создание и запуск команды.
    решается увеличением паузы в ключе PauseTcPrm в секции [Setting] в TCIMG.ini
  - ограничение на запись в файл UserCmd.ini
    решается снятием атрибутов ограничивающих запись (таких как "только чтение", "скрытый" ...) или установкой "Полного доступа" к файлу
При появлении той или иной ошибки проверьте является ли ваша версия актуальной. Последнюю версию утилиты Вы можете скачать на странице TCIMG.

  7. Структура командной строки утилиты?

Структура командной строки:
  - однокомандная, где задействована одна команда и строка параметров команды:

Command=StringParameters

или
  - многокомандная, где задействовано несколько команд с параметрами, разделёнными пробелом:

Command1=StringParameters1 Command2=StringParameters2 ... CommandN=StringParametersN

В самой строке параметров StringParameters не должно быть пробелов и кавычек* !
Если в командах, параметрах необходимы кавычки - используются две одинарные кавычки (апострофа) '' , если в команде необходим пробел - используйте два символа (тильды) ~~

* Кавычки могут использоваться в исключительных случаях и если они используются, то необходимо контролировать, чтобы они не "пересекались" с другими командами и их параметрами. Вот один из примеров - это задействование параметра TC "%O", который необходимо "брать" в кавычки, иначе при имени с пробелом команда не будет правильно работать:

creat=%p||"%O" ;; создать в активной панели файл именем элемента под курсором

* Кавычки должны использоваться, если в системе NTFS отключено создание имён в формате 8.3 для файлов и папок. При этом параметры командной строки Total Commander, такие как %p, %t. %n ..., не передают в строку параметров короткие имена файлов/папок, а передают полные имена/пути, которые могут содержать пробелы (к примеру, путь C:\Program Files\ передавался как C:\PROGRA~1\). А значит параметры %p, %t, %n ... необходимо "брать" в кавычки:

creat="%p"||"%O" ;; создать в активной панели файл именем элемента под курсором

При запуске без параметров диалог:



  8. Надо ли строку параметров обрамлять кавычками?

Нет. Синтаксис утилиты сделан таким образом, чтобы свести к минимуму использование кавычек и пробелов в командной строке.

  9. Среди примеров нет нужного, можно ли добавить свою команду?

Можно. Ряд команд и параметров внесено, благодаря пожеланиям пользователей, за что им большое спасибо. Необходимо подробно описать свою задачу на сайте в теме утилиты TCIMG или в теме Заказ кнопок. Если проблема не сугубо индивидуальная, то возможно её решение (код) будет внесён в утилиту в виде параметра или отдельной команды.

  10. Есть ли поддержка других языков в диалогах утилиты?

Да. К сожалению нет возможности лично перевести утилиту на другие языки, но все желающие могут сделать это самостоятельно, подробности
Для перевода справки на другие языки тоже всё готово. см. примечания команды chelp

  11. Антивирус удаляет TCIMG.exe?

Это ложное срабатывание на 100%. В коде утилиты нет ничего вредоносного. Много раз я отправлял файлы на исправление ложного срабатывания различным антивирусным программам и они исправляли свои базы данных. Вот скриншоты проверки с сайта VirusTotal.com - 3 из 63 (а когда-то было 23/48). Рекомендую в Вашем "антивируснике" внести TCIMG.exe в игнорируемые.
Если проверить "чистый" код, то показывает 0/63. Подозрение возникает при компиляции TCIMG.au3 в TCIMG.exe

  12. Как команде утилиты присвоить комбинацию горячих клавиш в Total Commander?

Возьмём команду:

rstart ;; перезапуск Total Commander

a) Необходимо в UserCmd.ini создать пользовательскую команду em_Restart:

[em_Restart]
cmd=%COMMANDER_PATH%\TCIMG.exe
param=rstart

б) Связать команду с комбинацией горячих клавиш:
Это можно осуществить через диалог настроек в разделе "Разное"

или прописать необходимую комбинацию вручную в Wincmd.ini в секции [Shortcuts] или [ShortcutsWin], если участвует клавиша WIN

[Shortcuts]
A+1=em_Restart

Теперь при ALT+1 будет запускаться заданная команда.

  13. Можно ли использовать команды утилиты не только в Total Commander?

Конечно. Там, где это необходимо: в системе, в скриптинге, в других приложениях можно легко подключить вызов нужных команд или серии команд утилиты. При этом не нужна специальная или предварительная регистрация модулей и библиотек. В разделе интеграция пока немного примеров, возможно в будущем их появится больше.

  14. Как правильно обновлять утилиту?

Последнюю версию утилиты Вы можете скачать на странице TCIMG. Необходимо заменить все файлы в папке утилиты файлами из архива. При обновлении не затрагиваются настроенные кнопки и команды. Изменения версий в разделе история. Дополнительные комментарии на сайте в теме утилиты TCIMG

  15. Как сохранять свои настройки при обновлении?

В версии 3.7 появилась возможность сохранять свои настройки независимо от обновления TCIMG.ini и TCIMG_Russian.lng. Что нужно для этого сделать:
1. Создать в папке утилиты файл TCIMGU.ini и перенести необходимые секции с ключами из TCIMG.ini
2. Создать в папке ...\Files\Lng\ или в папке утилиты файл TCIMGU.lng и перенести необходимые секции с ключами из TCIMG_Russian.lng, подробности

Важно! Файлы должны быть созданы в кодировке 1200 UTF16 LE (Unicode Little Endian).
Можно создать дубликат TCIMG.ini, переименовать в TCIMGU.ini и внести свои изменения.

TCIMGU.ini и TCIMGU.lng - пользовательские файлы настроек. Если они существуют в папке утилиты, то автоматически значения ключей будут браться из них, недостающие из соответствующих TCIMG.ini и TCIMG_Russian.lng и других.

При добавлениях ключей или секций в новых версиях утилиты нет необходимости копирования их в пользовательские файлы настроек. В TCIMGU.ini и TCIMGU.lng могут хранится все или только нужные настройки.

3. Чтобы обновление не влияло на ваши многострочные команды в файле TCIMG.tcg, создайте файл tcg с любым именем в папке утилиты или в папке ...\Files\Tcg\, к примеру TCIMGU.tcg, и пропишите имя в пользовательском файле TCIMGU.ini в секции [Setting] в ключе TCG (см. Дополнение №31).

[Setting]
...
TCG=TCIMGU.tcg

Если используется несколько файлов, то они разделяются /

[Setting]
...
TCG=TCIMGU1.tcg/TCIMGU2.tcg

Если файлы находятся вне папки утилиты или вне папки ...\Files\Tcg\, то прописываются полные или относительные пути

[Setting]
...
TCG=C:\1\css.tcg/%COMMANDER_PATH%\1\css22.tcg


4. В версии 16.5 в TCIMG.ini в секцию [Setting] добавлен ключ LNG в который можно прописывать пользовательские файлы .lng
Прописывается либо полный путь, либо имя файла, который находится в папке с утилитой.
Несколько пользовательских lng файлов прописываются через разделитель /

[Setting]
...
LNG=TCIMGL1.lng/TCIMGL2.lng/C:\1\SSS.lng/%COMMANDER_PATH%\1\LLL.lng



  16. Надо ли регистрировать утилиту или файлы утилиты в системе?

Нет. Утилита полностью портабельна, может работать со съемных носителей без функциональных ограничений, не оставляя следов в системе.

  17. Бесплатна ли утилита?

Да. Утилита полностью бесплатна.
Те, у кого есть желание и возможность поддержать автора в развитии утилиты и реализации других интересных идей и проектов, могут это сделать, перейдя на страницу поддержки.

  18. Можно ли использовать утилиту в сборках и проектах?

Да. Утилиту можно использовать в различных сборках и проектах. Есть два принципиальных условия:
1. Распространение не должно противоречить лицензии.
2. В описании сборок, проектов или в каких-то других разработках, в которых участвует утилита, должно быть упоминание TCIMG и сайта поддержки.

  19. Работает ли утилита на более ранних версиях Total Commander?

Утилита тестировалась на версиях 8.1.0.0 и выше. Большинство команд работают на всех версиях. Для команд, связанных с вызовом окон Total Commander, созданы специальные файлы: TCIMG3264_8_01.ini , TCIMG3264_8_5.ini и TCIMG3264.ini.
Рекомендую переходить на более новые версии Total Commander, если нет желания и что-то не работает - присылайте свою версию файлового менеджера, код неработающей кнопки - попробую адаптировать утилиту.

  20. Можно ли создавать объекты, относительно папки утилиты?

В версии 5.0 появилась возможность использовать внутренние переменные пути:
%TCIMG_PATH% - путь к каталогу утилиты (без обратного слеша)
%TCIMG_DRIVE% - имя диска, на котором находится копия утилиты (D:)
В версии 6.4 добавилась переменная:
%TCIMG_TEMP% - путь к папке Temp для временных файлов , находящийся в каталоге с утилитой. Тоже самое что и %TCIMG_PATH%\Temp
Для очистки папки можно воспользоваться командой tempxx
В версии 8.3 добавилась переменная:
%TCIMG_INI% - путь к файлу настроек утилиты TCIMG.ini
В версии 8.5 добавилась переменная:
%TCIMG_EXE% - путь к запускающему файлу утилиты TCIMG.exe
Переменные не регистрируются в системе (только для использования в командах вызова).
Другие сокращения папок см. Дополнение №8

  21. Можно ли в командной строке Total Commander указывать переменные утилиты?

Можно, если использовать Autorun плагин.
В autorun.cfg в начале прописываются: Имя переменной и путь относительно папки Total Commander:
Пример записи:

SetEnv /A TCIMG_DRIVE "%COMMANDER_DRIVE%"
SetEnv /A TCIMG_EXE "%COMMANDER_PATH%\TCIMG.exe"
SetEnv /A TCIMG_PATH "%COMMANDER_PATH%"
SetEnv /A TCIMG_TEMP "%COMMANDER_PATH%\Temp"
SetEnv /A TCIMG_INI "%COMMANDER_PATH%\TCIMG.ini"

Вместе с запуском Total Commander будут задействованы заданные переменные и их можно указывать в командной строке:

TOTALCMD#BAR#DATA
%TCIMG_EXE%

%TCIMG_EXE%
TCIMG



  22. Как узнать какие пути попадают в командную строку при параметрах %t, %p...?

Для того чтобы увидеть всю командную строку при использовании параметров Total Commander (и не только) необходимо прописать знак вопроса ? в качестве первого символа параметров. Это позволяет в диалоговом окне просмотреть или изменить данные ввода.
Если же утилита используется вне Total Commander, а так же для расширенного просмотра и дальнейшего использования данных командной строки, можно воспользоваться специальными глобальными переменными $CmdLine и $CmdLineRaw

  23. Если в именах файлов встречаются умляуты, то команды не работают - это поправимо?

В большинстве примеров используется параметр %L для передачи списка объектов. При этом Total Commander создает список в кодировке ANSI. Если в именах файлов/папок встречаются символы (Ā, ȍ, Ŵ, ǎ ...), то они будут утеряны и поступит искажённый список несуществующих объектов, команды будут не правильно или совсем не работать. Для решения проблемы необходимо выбрать и использовать правильный параметр Total Commander , а именно %UL, %UF , %WL, %WF, который не искажает символы Unicode.

  24. Можно ли запускать утилиту с заданными параметрами не прибегая к помощи Total Commander'а, ярлыков...?

С версии 10.3 в архив с утилитой входит файл TCIMGGO.exe (своеобразный лаунчер), который позволяет запускать TCIMG.exe с заданными параметрами. Подробности в дополнении №27

  25. При длинных именах файлов некоторые команды не срабатывают, как это можно исправить?

В большинстве примеров используется параметр %L для передачи списка объектов. При этом Total Commander создает список в кодировке ANSI. При длинных именах файлов/папок более 259 символов (полного пути) Total Commander передаёт в утилиту неправильные (обрезанные) пути, т.к. при параметре %L и %UL имеется ограничение на длину имени. Рекомендуется в таких случаях для получении путей использовать параметр %WL
P.S. Из опыта: не рекомендую создавать очень глубокую структуру папок и длинные имена файлов, т.к. большинство программ имеют проблемы с чтением таких файлов...

  26. Не работает копирование, если обрабатываются объекты в папке %AppData%, как исправить?

Подобные папки типа %PUBLIC%, %WINDIR%, %TEMP%, %APPDATA%, %USERPROFILE%, %ALLUSERSPROFILE%, %LOCALAPPDATA% и.т.д. совпадают с сокращениями специальных папок системы (с переменными среды) или какой-либо другой программы (к примеру Total Commander, которая имеет сокращения %COMMANDER_PATH%, %COMMANDER_DRIVE% ...), почти во всех командах утилиты такие пути переводятся из относительных в абсолютные...
Можно запретить это делать командой envgt

  27. Не работают ряд команд с объектами, в имени которых имеются несколько восклицательных знаков, как исправить?

В начале создания утилиты в ряде команд и параметров был поставлен разделитель !!
Со временем выяснилось, что это является недальновидной ошибкой.
В версии 17.2 во все такие команды и параметры добавлен дополнительный разделитель // , который позволяет решить эту проблему.
В некоторых командах и параметрах добавлены разделители ?? и |
Необходимо изменить разделитель в ваших командах по аналогии с примерами в справке.


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