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


Запуск команд в зависимости от условий.
<IF> ... <THEN> ... <ELSE> ... <ENDIF>

<IF> expression <THEN> commands1 <ELSE> commands2 <ENDIF>

Параметры:

<IF>Тег начала условий.
expressionУсловие. Если выражение expression истинно, будет выполнено выражение commands1 после <THEN>.
<THEN>Тег.
commands1Строка команд. Команды и их параметры имеют тот же синтаксис, что и в примерах.
<ELSE>Тег. Если выражение expression ложно, будет выполнено выражение commands2 после <ELSE> [необязательный].
commands2Строка команд. Команды и их параметры имеют тот же синтаксис, что и в примерах. [необязательный].
<ENDIF>Тег окончания условий.

Примечания:

• Теги, условия и команды разделяются пробелом.
• Выражение expression может содержать как булевы операторы сравнения AND, OR, и NOT, так и логические операторы <, <=, >, >=, =, ==, и <>

ОПЕРАТОРЫ СРАВНЕНИЯ
Ниже указанные операторы, за исключением ==, не учитывают регистр при работе со строками, а при сравнении числа и строки, строка конвертируется в число
=Истинно, если значение слева равно значению справа.
==Истинно, если строки равны между собой. Учитывает регистр. Значения будут конвертированы в строки, если они не являются таковыми. Этот оператор используется только со строками, когда сравнение должно происходить с учётом регистра.
<>Истинно, если значения не равны между собой.
>Истинно, если первое значение больше второго.
>=Истинно, если первое значение больше или равно второму.
<Истинно, если первое значение меньше второго.
<=Истинно, если первое значение меньше или равно второму.
ЛОГИЧЕСКИЕ ОПЕРАТОРЫ
ANDЛогическая операция И.
ORЛогическая операция ИЛИ.
NOTЛогическая операция НЕ.
СКОБКИ
В сложных условиях с задействованием AND, OR, NOT используются скобки.
Скобки от операторов и условий отделяются пробелом: a = b AND ( x = y OR x = z )
Несколько подряд скобок прописываются без пробелов: (( a <> b ) AND ( с == d OR ( x = y AND x = z )))
Количество открывающихся скобок должно равняться количеству закрывающихся скобок.


• Условие expression может содержать:
  » Число или строку.
  » GLOBALNAME<...> - путь или количество элементов в массиве (списке) при глобальных элементах см. Дополнение №23.
  » [info] или <info> - информация параметра см. Дополнение №10.
  » [input], [combo], [group] - вводимая информация параметров см. Дополнение №18.
  » clpget - информация из буфера обмена.
  » Значения переменных $var_... команды exect
  » Функции Autoit : для вычисления используется функция Execute(String), где String - строка функций... см. описание

• Условия созданы для простых операций. Не поддерживаются вложенные условия <IF>, <SWITCH>, циклы <FOR> и обработка специальных методов <HOTKEY=...>, <PRESS=...>, <TIME=...> внутри структуры.
• Может быть задействовано несколько последовательных условий <IF> (друг за другом)..

См. также:

anf2d, arr2d, asave, carry, cmd64, cmdcm, cname, cycles, dilog, dubls, envgt, global, hotkiy, inbox, listx, macro, noglob, pause, pressy, presww, renew, scrpt, sends, slects, slist, swcmd, swcths, tempxx, tempz, timess, xopen, zmenu, zmenz

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

<IF> %E = mid <THEN> iniwr=%%COMMANDER_PATH%%\Wincmd.ini||Lister||PreloadFilterType32||0 <ELSE> iniwr=%%COMMANDER_PATH%%\Wincmd.ini||Lister||PreloadFilterType32||2 <ENDIF> tcimg=$cm304 ;; быстрый просмотр для файла под курсором, относительно расширения "mid"

<IF> [info=s70firefox.exe] = 0 <THEN> start=Browser <ENDIF> ;; если firefox не запущен, то запустить

<IF> [info=s70firefox.exe] = 0 <THEN> start=Browser pause=5s <ENDIF> xends=-1||&&(~~+)!!\~\~ sends=-1||@@RUSinURIANSI cmdcm=[check=BOX_TorrentSearch] zends=GLOBALCHECK1<k|0|¤>||¤!!<¤> cmdcm=GLOBALZENDS<1> ;; поиск на торрент трекерах содержимого буфера обмена, предварительно запустив Mozilla Firefox (если он закрыт)

<IF> [info=x1] = 0 <THEN> swcmd=sprtr=100÷÷tcimg=$cm101¦¦sprtr=50÷÷tcimg=$cm102¦¦SeparatorRezimActive <ELSE> swcmd=sprtr=0÷÷tcimg=$cm201¦¦sprtr=50÷÷tcimg=$cm202¦¦SeparatorRezimActive <ENDIF> ;; переключить активную панель в режим "Краткий" + изменение размера ширины панели 100%, при повторном нажатии вернуть в режим "Подробный" + размер ширины панели 50%

<IF> [info=x1] = 1 <THEN> swcmd=sprtr=0¦¦sprtr=50¦¦SeparatorA <ELSE> swcmd=sprtr=100¦¦sprtr=50¦¦SeparatorA <ENDIF> ;; переключение размера ширины активной панели 100/50

<IF> [info=x1] = 1 <THEN> swcmd=sprtr=10??tcimg=$cm269¦¦sprtr=50??tcimg=$cm269¦¦SeparatorAP <ELSE> swcmd=sprtr=90??tcimg=$cm269¦¦sprtr=50??tcimg=$cm269¦¦SeparatorAP <ENDIF> ;; переключить активную панель в режим "Просмотр эскизов" + изменение размера ширины активной панели до 90%, при повторном нажатии выйти из режима "Просмотр эскизов" + размер ширины панели 50%

<IF> [info=x14] = *.* <THEN> tcprm=CD~~*.exe <ELSE> tcprm=CD~~*.* <ENDIF> ;; переключение фильтров *.* и *.exe

<IF> [info=x14] = *.* <THEN> tcprm=CD~~*.exe tcimg=$cm524|3302|2023|524 <ELSE> tcprm=CD~~*.* <ENDIF> ;; переключение фильтров *.* (все файлы) и *.exe (без папок активной панели)

<IF> [info=x470] = 0 <THEN> ssize=1 tcimg=$p0 elmof=1,2,4,12 tcimg=$cm910|2903|305~~$p1 wpull=@W/3,0,@W/3,@H-55 ontop=1 <ELSE> tcimg=$p0~~$cm909|2903|305 elmon=1,2,4,12 tcimg=$p1 rsize=1 ontop=0 <ENDIF> ;; переключение между размерами окна TC + увеличение 100% и восстановление 50% активной панели + отключение ряда элементов окна и восстановление

<IF> [info=x52] = 000_Osnovnaja <THEN> tcprm=OPENBAR~~%%COMMANDER_PATH%%\BAR\002_Multimedia.bar <ELSE> tcimg=$cm2901 <ENDIF> ;; переключение: если имя активной панели инструментов 000_Osnovnaja, то откроется 002_Multimedia.bar, иначе панель инструментов закроется

<IF> [info=x60] = 32 <THEN> close=ACTIVE start=%%COMMANDER_PATH%%\TOTALCMD64.EXE <ELSE> close=ACTIVE start=%%COMMANDER_PATH%%\TOTALCMD.EXE <ENDIF> ;; запускать поочерёдно Total Commander 32/64

<IF> [info=x60] = 32 <THEN> close=ACTIVE start=%%COMMANDER_PATH%%\TOTALCMD64.EXE||/i=%%COMMANDER_PATH%%\WinCmd64.ini <ELSE> close=ACTIVE start=%%COMMANDER_PATH%%\TOTALCMD.EXE||/i=%%COMMANDER_INI%% <ENDIF> ;; запускать поочерёдно Total Commander 32/64 с соответствующим файлом настроек Wincmd.ini

<IF> <info=d9$f06/DocFiles//> = 0 <THEN> slist=%WL||##path<0>||save<$f254List1.txt|1> renms=$GLOBALSLIST||^^cntr<1|1|3>_ alist=$GLOBALRENMS||save<$f254List2.txt|1> copys=$GLOBALRENMS||$f06/DocFiles//0 <ENDIF> ;; копировать выделенные файлы в папку DocFiles на рабочем столе, предварительно добавив последовательную нумерацию в начало имён (задача после Ctrl+B временно собрать файлы из разных папок, возможно с одинаковыми именами, в одной папке)

<IF> <info=d9$f06/DocFiles//> = 0 <THEN> slist=%WL||##path<0>||save<$f254List1.txt|1> renms=$GLOBALSLIST||^^cntr<1|1|3>_ alist=$GLOBALRENMS||save<$f254List2.txt|1> moves=$GLOBALRENMS||$f06/DocFiles//0 <ENDIF> ;; переместить выделенные файлы в папку DocFiles на рабочем столе, предварительно добавив последовательную нумерацию в начало имён (задача после Ctrl+B временно собрать файлы из разных папок, возможно с одинаковыми именами, в одной папке)

<IF> <info=f1%C1//> = <info=f1%C2//> <THEN> infbx=InfoBox5 <ELSE> infbx=InfoBox6 <ENDIF> ;; сравнить контрольные суммы MD5 двух выделенных файлов в разных панелях или двух выделенных файлов в активной панели в сплывающем окне и сообщить результат

<IF> <info=f1%P%N//> = <info=f1%T%M//> <THEN> exect=MsgBox(64+4096,'Результат','Контрольные~~суммы~~совпадают.') <ELSE> exect=MsgBox(48+4096,'Результат','Контрольные~~суммы~~не~~совпадают.') <ENDIF> ;; сравнить контрольные суммы MD5 двух файлов в разных панелях, в сплывающем окне с ручным закрытием, сообщить результат (щелчок сначала по одному файлу, переход в другую панель к проверяемому файлу)

<IF> <info=f1%P%N//> = <info=f1%T%M//> <THEN> infbx=InfoBox5 <ELSE> infbx=InfoBox6 <ENDIF> ;; сравнить контрольные суммы MD5 двух файлов в разных панелях, в сплывающем окне сообщить результат

<IF> <info=f1%P%N//> = <info=f1%T%M//> <THEN> infbx=InfoBox5 <ENDIF> ;; сравнить два файла в разных панелях, если контрольные суммы MD5 совпадают, то оповестить в сплывающем окне

<IF> <info=f1%P%N//> = clpget <THEN> infbx=InfoBox5 <ELSE> infbx=InfoBox6 <ENDIF> ;; сравнить контрольную сумму MD5 файла с контрольной суммой из буфера обмена, сообщить результат в сплывающем окне

<IF> <info=f11%P%N//> = exe <THEN> start=%P%N <ENDIF> ;; если расширения у файла под курсором exe, то запустить приложение

<IF> <info=o9"%P"MKOFC.DLL> = 0 OR <info=o9"%P"MKOFC64.DLL> = 0 <THEN> infbx=InfoBox17 toexit <ELSE> infbx=InfoBox_TEST1 <ENDIF> ;; пример: если в активной панели нет одного из заданных файлов, то сообщение и выход из команды

<IF> <info=o9"%p"New\//> = 0 <THEN> folds="%p"||New <ENDIF> ;; создать папку New в активной панели, если её не существует

<IF> <info=o9"%pDoc"> = 1 <THEN> sends=FOLDM<PS<"%p"//2//0>//-1//0//txt>??-1 GLOBALSENDS<a> <ENDIF> ;; в папках активной панели получить список путей TXT файлов без рекурсии (если в активной панели присутствует папка Doc)

<IF> <info=o9"%pfiles1.f-l"> = 2 AND <info=o9"%pinfo.f-l"> = 0 <THEN> renmm="%p"journal.txt.bak||**0!! exect=$var_n=MsgBox(4+32+262144,'Сообщение','удалить~~файлы~~LOG.txt~~и~~LOG.old?')||$var_i=$var_n=7?_Exit():1 delss=LISTF<"%p"LOG.txt/"%p"LOG.old>||1||upd<1> <ENDIF> ;; если в активной панели есть файл files1.f-l и нет файла info.f-l, то переименовать файл journal.txt.bak в journal.txt и удалить (с подтверждением) файлы LOG.txt и LOG.old

<IF> <info=o9"%pfiles1.f-l"> = 2 AND <info=o9"%pinfo.f-l"> = 0 <THEN> renmm="%p"journal.txt.bak||**0!! exect=$var_n=MsgBox(4+32+262144,'Сообщение','удалить~~файлы~~LOG.txt~~и~~LOG.old?')||$var_i=$var_n=7?_Exit():1 delss=LISTF<"%p"LOG.txt/"%p"LOG.old>||1||upd<1> <ENDIF> ;; если в активной панели есть файл files1.f-l и нет файла info.f-l, то переименовать файл journal.txt.bak в journal.txt и удалить(с подтверждением) файлы LOG.txt и LOG.old

<IF> <info=o9"%tprim1.f_l"> = 2 AND <info=o9"%tprim2.f_l"> = 2 <THEN> copys=%WL||"%t"//1||upd<3> <ENDIF> ;; копировать выделенные объекты в другую панель с заменой при условии, что в другой панели есть файлы prim1.f_l и prim2.f_l

<IF> <info=o9$f250\TCIMG_BLACK.chm//> = 2 <THEN> runhp=x||$f250\TCIMG_BLACK.chm||Справка~~TCIMG_BLACK||1 <ELSE> runhp=x||$f250\TCIMG.chm||Справка~~TCIMG||1 <ENDIF> ;; запустить тёмную справку TCIMG, если не обнаружена - светлую

<IF> <info=o9%P%N//> <> 2 OR <info=o9%T%M//> <> 2 <THEN> infbx=InfoBox7 <ENDIF> ;; проверка - выдаётся сообщение, если один из объектов не является файлом

<IF> <info=o9%P%N//> = 1 <THEN> moves=[tc=SL]||%P%N\//1 beepss <ENDIF> ;; переместить выделенные объекты обеих панелей в папку под курсором (с заменой)

<IF> <info=o9%P%N\prim1.f_l> = 2 AND <info=o9%P%N\prim1.f_l> = 2 <THEN> copys=[tc=TL]||%P%N\//1 <ENDIF> ;; копировать выделенные объекты из другой панели с заменой в папку под курсором в активной панели при условии, что в в папке под курсором есть файлы prim1.f_l и prim2.f_l

<IF> <info=o9[tc=AA]//> = 1 <THEN> copys=%WL||[tc=AA]//0||$$_[info=s30] <ELSE> copys=%WL||"%p\clpget"//0||$$_[info=s30] <ENDIF> ;; копировать выделенные объекты в папку под курсором с переименованием (+_Date) , если курсор на папке, иначе в папку с именем из буфера обмена

<IF> <info=s151"%t"|B//> > <info=o300%WL|3|B//> <THEN> copys=%WL||"%t"//0 <ELSE> infbx=Ошибка||Не~~хватает~~места~~на~~целевом~~диске~~<info=o79"%t">||5||200||70 <ENDIF> ;; проверить размер выделенных объектов и размер свободного пространство целевого диска (другой панели): если меньше, то копировать выделенные объекты в другую панель, если нет - выдать сообщение

<IF> <info=s33> = 20 <THEN> infht=-1||Сообщение||20||200||100||set<,,,46,,,1> <ENDIF> ;; если текущий день месяца соответствует 20, то выдать сообщение

<IF> 0 <> <info=t61-1> <THEN> textt=%P%N||##cliptext||upd<1> <ENDIF> ;; если буфер обмена не пустой, то произвести замену в содержимом файла под курсором содержимым буфера обмена

<IF> Execute(StringInStr('<info=s85AkelPad.exe>','Name.txt')) > 0 <THEN> infbx=InfoBox_TEST1 <ENDIF> ;; если в AkelPad активный документ Name.txt, то выдать сообщение

<TIME=h#-1:h#+1:s15> <IF> [info=s70*9060] = 1 <THEN> sndps=1 <ELSE> close=&#58PID: <ENDIF> ;; посылает звуковой сигнал каждые 15 секунд, пока не будет закрыт процесс PID=9060

activ=1||[info=x61] sends=-1??-1||#L1||##path<0|0|5> listx=$GLOBALSENDS||2 <IF> <info=t61$GLOBALLISTX[1]> = 0 <THEN> infbx=Сообщение||Путь~~не~~существует!||3||200||40 <ELSE> pathl=GLOBALSENDS<1>||fold<> <ENDIF> ;; перейти к объекту в TC по пути из буфера обмена, при отсутствии пути выдать сообщение

aends=1 <IF> GLOBALAENDS<1> = 1 <THEN> shape=32 dilog=[dates=BOX1][dates=BOX2] <ELSE> shape=32 dilog=[dates=BOX3][dates=BOX4] <ENDIF> GLOBALDILOG<a> ;; пример использования shape в условиях

alist=@%P%N||&&\.bak$!!||**2!! listx=@GLOBALALIST<1>||2 <IF> <info=t61$GLOBALLISTX[1]> = 0 <THEN> copyy=%P%N||"%p"//1||&&\.bak$!!||**2!! <ELSE> exect=$var_n=MsgBox(4+32+262144,'Сообщение','Заменить~~существующий~~объект~~из~~*.bak?')||$var_i=$var_n=7?_Exit():1 copyy=%P%N||"%p"//1||&&\.bak$!!||**2!! <ENDIF> ;; восстановить объект из *.bak под курсором автоматически, если объект отсутствует, в случае наличия объекта выдать запрос на замену

alist=[tc=AF-1f]||<dellist=C:\files.txt|6> <IF> 0 <> <info=t61$GLOBALALIST[1]> <THEN> exect=$var_n=MsgBox(4+32+262144,'Сообщение','Удалить~~файлы?')||$var_i=$var_n=7?_Exit():1 delss=$GLOBALALIST||1||recycle<1>||upd<1> <ELSE> infht=-1||Сообщение||Подобных~~файлов~~не~~найдено||230||60 <ENDIF> ;; удалить в корзину файлы активной панели по списку(имена с расширениями) C:\files.txt (требуется подтверждение удаления)

alist=[tc=AF-1f]||<dellist=C:\files.txt|6> <IF> 0 <> <info=t61$GLOBALALIST[1]> <THEN> exect=$var_n=MsgBox(4+32+262144,'Сообщение','Удалить~~файлы?')||$var_i=$var_n=7?_Exit():1 delss=$GLOBALALIST||1||upd<1> <ELSE> infht=-1||Сообщение||Подобных~~файлов~~не~~найдено||230||60 <ENDIF> ;; удалить, минуя корзину, файлы в активной панели по списку(имена с расширениями) C:\files.txt (требуется подтверждение удаления)

alist=FOLDM<%WL//-1>||<dellist=$f212\Ffiles.txt|9> <IF> 0 <> <info=t61$GLOBALALIST[1]> <THEN> exect=$var_n=MsgBox(4+32+262144,'Сообщение','Удалить~~файлы?')||$var_i=$var_n=7?_Exit():1 delss=$GLOBALALIST||1||upd<1> <ELSE> infht=-1||Сообщение||Подобных~~файлов~~не~~найдено||250||60 <ENDIF> ;; в выделенных папках с рекурсией удалить, минуя корзину, файлы в активной панели по списку Ffiles.txt (имена с расширениями) (требуется подтверждение удаления)

bends=@PS<"%P"//1//0> sends=GLOBALBENDS<1>||?#(?m)\.flg$!!(?m)\\read\.me$!!0 <IF> GLOBALSENDS<1> = 11 <THEN> moves=GLOBALBENDS<1>||"%t"//0||upd<2> <ENDIF> ;; если в активной панели есть файл flg и файл read.me, то переместить все файлы из активной панели в неактивную

bends=PS<%P%N//1//0//"%O".7z> <IF> GLOBALBENDS<1> > '''' <THEN> copyy=GLOBALBENDS<1>||"%t"||upd<3> infbx=Сообщение||Файл~~скопирован~~в~~другую~~панель||3||300||80 <ENDIF> ;; в папке под курсором найти файл с именем папки под курсом и расширением 7z, если таковой есть, то скопировать его в неактивную панель и выдать сообщение: "Файл скопирован в другую панель"

bends=PS<%P%N//1//0//"%O".7z> <IF> GLOBALBENDS<1> > '''' <THEN> movee=GLOBALBENDS<1>||"%p"||upd<1> infbx=Сообщение||Файл~~перемещён~~в~~активную~~панель||3||300||80 <ENDIF> ;; в папке под курсором найти файл с именем папки под курсом и расширением 7z, если таковой есть, то переместить его в активную панель и выдать сообщение: "Файл перемещён в активную панель"

exect=$var_ii=##[input=BOX68]||$var_im=$var_ii&'n'||$var_pid=@AutoItPID pause=$var_im <TIME=h#-1:h#+1:s5> <IF> [info=s70*$var_pid] = 1 <THEN> sndps=1 <ELSE> close=&#58PID: <ENDIF> <TIMEEND> exect=MsgBox(262144+64,'Напоминаю','Прошло~~$var_ii~~минут~~!'&@CR&'Пора~~на~~кухню!') ;; через заданное количество минут выдать сообщение (количество вводится в диалоге) + в течении отображения диалога издавать звуковое уведомление $var_ii через каждые 5 секунд

exect=$var_name='"%O"'||$var_path='%P%N' <IF> <info=n4|32-255??$var_name> = 0 <THEN> sends=$var_name??1||@@Diacritic!!1 copyy=%P%N||"%p"//4||##GLOBALSENDS<1> exect=$var_path='GLOBALCOPYY<1>' <ENDIF> start=%%COMMANDER_PATH%%\Programs\Atlantis\Atlantis.exe||$var_path ;; открыть файл под курсором в программе Atlantis, если имя файла имеет не ASCII-символы, то они заменяются и открывается дублированный файл с новым именем

exect=$var_name='"%O"'||$var_path='%P%N' <IF> <info=n4|32-255??$var_name> = 0 <THEN> sends=$var_name??1||@@Diacritic!!1 copyy=%P%N||"%p"//4||##GLOBALSENDS<1> exect=$var_path='GLOBALCOPYY<1>' textt=%%COMMANDER_PATH%%\Programs\Atlantis\Temp\Atlantis_Name.txt||$$@CRLF$var_path@CRLF"%O"||formt<60>||code<4>||backup<0> <ENDIF> start=%%COMMANDER_PATH%%\Programs\Atlantis\Atlantis.exe||$var_path ;; открыть файл под курсором в программе Atlantis, если имя файла имеет не ASCII-символы, то они заменяются и открывается дублированный файл с новым именем + записать с папку программы в папку Temp во временный файл Atlantis_Name.txt имена для последующего переименования

exect=$var_name=InputBox('Запрос','Введите~~имя~~файла','<info=f*63,62,61*~~-~~*([tc=AP])>') <IF> $var_name = '''' <THEN> toexit <ENDIF> exect=_ViewValues($var_name) ;; ввести значение в диалоге, если же диалог закрывается или нажимается кнопка "Отмена", то выход из программы

exect=$var_name=InputBox('Запрос','Введите~~имя~~файла','<info=f*63,62,61*~~-~~*([tc=AP])>') <IF> $var_name > '''' <THEN> exect=_ViewValues($var_name) <ELSE> toexit <ENDIF> ;; ввести значение в диалоге, если же диалог закрывается или нажимается кнопка "Отмена", то выход из программы

exect=$var_put=##@[tc=AP] sends=-1??-1||formt<54,1,63> <IF> <info=s70AdvOR.exe> = 0 <THEN> start=AdvOR||&&procwait buttn=GLOBALPROGR<2>||x|$l{DOWN~~5}||Button3||Button8 pause=5s <ENDIF> urlxt=$GLOBALSENDS||sagent<W4>||sproxy<1|2|127.0.0.1:9090>||$var_put//9//Magnet-link.txt||?Fserch119||delim<@CRLF!!1>||code<0>||pause<2-3>||owrite<2|1>||progres<> ;; запустить AdvOR (если он не запущен) и закачать из списка ссылок-топиков rutracker.org из буфера обмена магнет ссылки в создаваемый файл Magnet-link.txt в активной панели

exect=$var_s=##<info=o71%P%N//> <IF> $var_s = zip OR $var_s = rar <THEN> copyy=%P%N||"%t"//0||upd<3> <ENDIF> ;; если расширение под курсором zip или rar, то копировать файл в другую панель

exect=$var_s='C' <IF> <info=o80%P%N//> = C: <THEN> exect=$var_s='D' <ENDIF> focusp patha=$var_s:\<info=o151%P%N//> ;; перейти в другую панель в синхронизированный каталог на диске D:\ (если активная панель C:\) и на диске С:\ (если активная панель D:\)

exect=$var_s=ClipGet() <IF> $var_s <> 320x240 <THEN> exect=$var_s='100x100' <ENDIF> GLOBALEXECT<a> ;; если содержимое буфера обмена не равно строке 320x240, то переменная $var_s=100x100

exect=$var_s=ClipGet()||$var_i=StringInStr('$var_s','\') <IF> $var_i = 0 <THEN> brwsr=$var_s <ELSE> openf=$var_s||x||explorer<open> <ENDIF> ;; открыть в зависимости содержимого буфера обмена: если ссылка, то в браузере, если путь то в редакторе

exect=$var_s=ClipGet()||$var_i=StringRegExp(ClipGet(),'([^A-Za-z\d])',0)?MsgBox(48+4096,'Результат','Число~~в~~буфере~~не~~является~~хэшем.')&_Exit():1||$var_i=StringLen('$var_s')||$var_n=$var_i=8?3:($var_i=32?1:($var_i=64?6:($var_i=128?8:MsgBox(48+4096,'Результат','Число~~в~~буфере~~не подходит~~под~~условие~~проверки.')&_Exit())))||$var_path=$var_n&'%P%N' <IF> <info=f$var_path|1//> = $var_s <THEN> exect=MsgBox(64+4096,'Результат','Контрольные~~суммы~~совпадают.') <ELSE> exect=MsgBox(48+4096,'Результат','Контрольные~~суммы~~не~~совпадают.') <ENDIF> ;; сравнить контрольные суммы файла под курсором и буфера обмена, в зависимости от длины строки буфера: если 8, то сравнение происходит по CRC32, если 32 - MD5, если 64 - SHA256, если 128 - SHA512, в сплывающем окне с ручным закрытием, сообщить результат

exect=$var_s=ClipGet()||$var_n=StringRegExp('$var_s','(\d{1,4}x\d{1,4})') <IF> $var_n = 0 <THEN> exect=$var_s='100x100' <ENDIF> exect=_ViewValues('$var_s') ;; если содержимое буфера обмена не является строкой вида 0x0 или 00x00 или 000x000 или 0000x0000 (где вместо нуля может быть любая цифра), то переменная $var_s=100x100

exect=$var_s0=ClipGet()||$var_s1=StringRegExp('$var_s0','(\d{1,4}x\d{1,4})')=0?'100x100':'$var_s0'||_ViewValues('$var_s1') ;; если содержимое буфера обмена не является строкой вида 0x0 или 00x00 или 000x000 или 0000x0000 (где вместо нуля может быть любая цифра), то переменная $var_s=100x100

global copys=D:\List.txt||"%p"||upd<1> <IF> 0 <> <info=t61GLOBALCOPYS2[1]> <THEN> GLOBALCOPYS2<a> <ENDIF> ;; копировать в активную панель файлы по списку, если какой-либо не скопировался, то показать список нескопированных

global count=%P%N||([\r\n]+cmd\d+=-2[\r\n]+)||0 <IF> GLOBALCOUNT<1> > 0 <THEN> textt=%P%N||formt<bar3> <ELSE> textt=%P%N||formt<bar3,bar1,bar2> <ENDIF> ;; заменять по кругу в BAR файле под курсором разделители <--> переносы строки

global slist=PS<[tc=TP]//1//0>||##path<4>||formt<0!!(?i)[a-zа-яё].*!!> xends=GLOBALSLIST<1>||formt<0!!(?m)([\d]+)(\D).*>||&&.*\d!! <IF> 1 <> <info=t61$GLOBALXENDS[1]> <THEN> xends=_ <ENDIF> blist=$GLOBALXENDS xlist=$GLOBALSLIST||&&\D.*!!||formt<11> <IF> 1 <> <info=t61$GLOBALXLIST[1]> <THEN> bends=000 xlist=$GLOBALBENDS <ENDIF> iends=<info=t60$GLOBALXLIST[1]> aends=GLOBALXLIST<1>||#Sfnc_numplus0 copys=%WL||"%t"//0||^^cntr<GLOBALAENDS<1>|1|GLOBALIENDS<1>>GLOBALBLIST<1>||upd<3> ;; копировать выделенные файлы активной панели в другую панель с добавлением к именам копируемых файлов в начало имени счетчика являющимся продолжением начальной нумерации файлов в другой панели

hends=@<info=o600%P%N>??-1 listx=@GLOBALHENDS<1>||2 <IF> <info=t61$GLOBALLISTX[1]> = 0 <THEN> infbx=Сообщение||Объект~~не~~найден!||3||200||40 <ELSE> patha=GLOBALHENDS<1>||fold<> <ENDIF> ;; перейти в активной панели к реальному объекту символической ссылки под курсором, 3-х секундное сообщение в случае отсутствия реального объекта

hends=@<info=o600%P%N>??-1 listx=@GLOBALHENDS<1>||2 <IF> <info=t61$GLOBALLISTX[1]> = 0 <THEN> infbx=Сообщение||Объект~~не~~найден!||3||200||40 <ELSE> pathb=GLOBALHENDS<1>||fold<> <ENDIF> ;; перейти в активной панели в НОВОЙ вкладке к реальному объекту символической ссылки под курсором, 3-х секундное сообщение в случае отсутствия реального объекта

hends=@<info=o600%P%N>??-1 listx=@GLOBALHENDS<1>||2 <IF> <info=t61$GLOBALLISTX[1]> = 0 <THEN> infbx=Сообщение||Объект~~не~~найден!||3||200||40 <ELSE> pathu=GLOBALHENDS<1>||fold<> <ENDIF> ;; перейти в другой панели к реальному объекту символической ссылки под курсором, 3-х секундное сообщение в случае отсутствия реального объекта

imgpr=1 <IF> <info=f1%P%N//> = clpget <THEN> exect=$var_ibutton=MsgBox(4096,'Сообщение','Контрольные~~суммы~~совпадают.') <ELSE> exect=$var_ibutton=MsgBox(4096,'Сообщение','Контрольные~~суммы~~не~~совпадают.') <ENDIF> ;; сравнить контрольную сумму MD5 файла с контрольной суммой из буфера обмена, сообщить результат в окне системного образца

imgpr=1 bends=PS<C:\TPL\//1//0//*.txt>??-1||&&(.*\\)!!||@CRLF!!| cends=PS<C:\TPL\//1//0//*.txt>??-1||&&(.*\\)!!||@CRLF!!| shape=1 dilog=[combo=Создание~~файла||Введите~~имя~~файла||info||343||117][combo=Выбор~~шаблона||Выберите~~файл-шаблон~~из~~папки~~C:\TPL||GLOBALBENDS<1>||343||117] slist=PS<"%p"Soft\bin\//1//-1//dep.list>||##path<10> xlist=FOLDC<$GLOBALSLIST//1//-1//clear.info>||##path<10> $GLOBALSLIST+$GLOBALXLIST alist=$GLOBALSLIST||formt<28> <IF> 0 <> <info=t61$GLOBALALIST[1]> <THEN> slist=PS<C:\TPL\//1//0//*.txt>||##path<6> sends=C:\TPL\GLOBALCOMBO2<1>??-1 creat=@GLOBALALIST<t>||GLOBALCOMBO1<1>.txt||code<0>||content<$GLOBALSENDS> <ELSE> infht=-1||Сообщение||Подобных~~папок~~не~~найдено||230||60 <ENDIF> ;; создание файла в папках находящиеся в Soft\bin активной панели, в которых есть файл dep.list и нет файла clear.info (ввод имени и выбор файла шаблона из папки C:\TPL в диалоговом окне)

imgpr=1 slist=PS<"%p"Soft\bin\//1//-1//dep.list>||##path<10> xlist=FOLDC<$GLOBALSLIST//1//-1//clear.info>||##path<10> $GLOBALSLIST+$GLOBALXLIST alist=$GLOBALSLIST||formt<28> <IF> 0 <> <info=t61$GLOBALALIST[1]> <THEN> copyy=[tc=AA]||x//1||allfold<GLOBALALIST<t>> <ELSE> infht=-1||Сообщение||Подобных~~папок~~не~~найдено||230||60 <ENDIF> ;; копирование(с заменой) файла под курсором во все папки находящиеся в Soft\bin\ активной панели, в которых есть файл dep.list и нет файла clear.info

imgpr=1 slist=PS<"%p"Soft\bin\//1//-1//dep.list>||##path<10> xlist=FOLDC<$GLOBALSLIST//1//-1//clear.info>||##path<10> $GLOBALSLIST+$GLOBALXLIST alist=$GLOBALSLIST||formt<28> <IF> 0 <> <info=t61$GLOBALALIST[1]> <THEN> creat=@GLOBALALIST<t>||Info.txt||code<0>||content<$f200\TPL\main.tpl> <ELSE> infht=-1||Сообщение||Подобных~~папок~~не~~найдено||230||60 <ENDIF> ;; создание файла Info.txt с содержимым из main.tpl в папках находящихся в Soft\bin\ активной панели, в которых есть файл dep.list и нет файла clear.info

imgpr=1 slist=PS<"%p"Soft\bin\//1//-1//dep.list>||##path<10> xlist=FOLDC<$GLOBALSLIST//1//-1//clear.info>||##path<10> $GLOBALSLIST+$GLOBALXLIST alist=$GLOBALSLIST||formt<28> <IF> 0 <> <info=t61$GLOBALALIST[1]> <THEN> slist=PS<C:\TPL\//1//0//*.txt>||##path<6> GLOBALSLIST<b> sends=C:\TPL\GLOBALARRAY<1>??-1 creat=@GLOBALALIST<t>||Info.txt||code<0>||content<$GLOBALSENDS> <ELSE> infht=-1||Сообщение||Подобных~~папок~~не~~найдено||230||60 <ENDIF> ;; создание файла Info.txt, с содержимым из выбранного в C:\TPL\ файла шаблона, в папках находящихся в Soft\bin\ активной панели, в которых есть файл dep.list и нет файла clear.info

moves=%WL||:://0//(.+\\).+\\.+\\?//$1 tcimg=$cm2002 <IF> <info=d1"%p"//> = 0 <THEN> delsm="%p"||1||upd<1> <ENDIF> ;; переместить выделенные объекты на уровень вверх и удалить родительскую папку, если она пустая (и так же если все подкаталоги пустые)

moves=%WL||:://0//(.+\\).+\\.+\\?//$1 tcimg=$cm2002 <IF> <info=d9"%p"//> = 0 <THEN> delsm="%p"||1||upd<1> <ENDIF> ;; переместить выделенные объекты на уровень вверх и удалить родительскую папку, если она пустая

nfsis=1||Win32_Service~~WHERE~~Name=''WerSvc''||1||sname<Name> <IF> GLOBALNFSIS<0> = 2 <THEN> infbx=||Заданная~~служба~~существует||3||200||70 <ENDIF> ;; проверка имени службы "WerSvc" с выводом сообщения

sends=$f212\Ffiles.txt??-1||?Fslash1 alist=FOLDM<%WL//-3||0>||<dellist=$GLOBALSENDS|5> <IF> 0 <> <info=t61$GLOBALALIST[1]> <THEN> exect=$var_n=MsgBox(4+32+262144,'Сообщение','Удалить~~объекты?')||$var_i=$var_n=7?_Exit():1 delss=$GLOBALALIST||1||upd<1> <ELSE> infht=-1||Сообщение||Подобных~~объектов~~не~~найдено||250||60 <ENDIF> ;; в выделенных папках без рекурсии удалить объекты, которых нет в списке Ffiles.txt (имена с расширениями и/или имена подпапок\ с конечным слешем)

sends=$f212\Ffiles.txt??-1||?Fslash1 alist=FOLDM<%WL//-3||0>||<dellist=$GLOBALSENDS|9> <IF> 0 <> <info=t61$GLOBALALIST[1]> <THEN> exect=$var_n=MsgBox(4+32+262144,'Сообщение','Удалить~~объекты?')||$var_i=$var_n=7?_Exit():1 delss=$GLOBALALIST||1||upd<1> <ELSE> infht=-1||Сообщение||Подобных~~объектов~~не~~найдено||250||60 <ENDIF> ;; в выделенных папках без рекурсии удалить объекты, которые есть в списке Ffiles.txt (имена с расширениями и/или имена подпапок\ с конечным слешем)

sends=$f212\ForDel.txt??-1||?Fslash1 alist=PS<"%T"//0//0>||<dellist=$GLOBALSENDS|5> <IF> 0 <> <info=t61$GLOBALALIST[1]> <THEN> exect=$var_n=MsgBox(4+32+262144,'Сообщение','Удалить~~объекты?')||$var_i=$var_n=7?_Exit():1 delss=$GLOBALALIST||1||upd<3> <ELSE> infht=-1||Сообщение||Подобных~~объектов~~не~~найдено||250||60 <ENDIF> ;; в противоположной панели удалить (без рекурсии) с подтверждением все объекты кроме тех, имена которых есть в "ForDel.txt"

sends=%P%N??-1||#L1 <IF> 1 <> <info=t51$GLOBALSENDS|[^\d]> <THEN> exect=$var_i=GLOBALSENDS<1>+2 textt=%P%N||#L$var_i:-1 <ENDIF> ;; если содержимым первой строки файла под курсором является одно целое число, то удалить количество строк равное этому числу включая первую строку, при другом содержимом первой строки выход из команды

sends=@<info=f12%P%N> <IF> <info=t51$GLOBALSENDS[1]|^Win> = 1 <THEN> copyy=%P%N||"%t"//0 <ENDIF> ;; если базовое имя файла под курсором начинается с"Win", то копировать его в другую панель, в противном случае выйти из программы

sends=[info=x52] <IF> GLOBALSENDS<1> = 000_Osnovnaja OR GLOBALSENDS<1> = 084_AU3 <THEN> tcprm=OPENBAR~~%%COMMANDER_PATH%%\BAR\002_Multimedia.bar <ELSE> tcimg=$cm2901 <ENDIF> ;; переключение: если имя активной панели инструментов 000_Osnovnaja или 084_AU3, то откроется 002_Multimedia.bar, иначе панель инструментов закроется

sends=[tc=AL] <IF> 1 <> <info=t61$GLOBALSENDS[1]> <THEN> start=MPC-BE||clpget <ELSE> start=MPC-BE||list<%WL> <ENDIF> ;; если в активной панели нет выделенных файлов, то воспроизвести в плеере MPC файл по пути или ссылке из буфера обмена, если есть выделенные файлы, то воспроизвести их в плеере MPC

sends=<inikey=8//%%TCIMG_PATH%%\TCIMG.ini//ZMenu//1_PID> <IF> [info=s70*GLOBALSENDS<1>] = 1 <THEN> keybd=0~~+{TAB} <ENDIF> ;; вызвать контекстное меню, запущенное командой zmenu=hotkey_Menu_Example - горячие клавиши SHIFT + TAB (если нет процесса, то не вызывать)

sends=>s85AkelPad.exe <IF> Execute(StringInStr('GLOBALSENDS<1>','Name.txt')) > 0 <THEN> infbx=InfoBox_TEST1 <ENDIF> ;; если в AkelPad активный документ Name.txt, то выдать сообщение

sends=-1??-1 <IF> <info=t51$GLOBALSENDS[5]|(.+)> = 1 <THEN> infht=-1||InfoHtml0 <ENDIF> ;; если в содержимом списка строк в буфере есть 5-я строка, то появится информационное окно

sends=-1??-1 <IF> <info=t51GLOBALSENDS<t5>|(.+)> = 1 <THEN> infht=-1||InfoHtml0 <ENDIF> ;; если в содержимом списка строк в буфере есть 5-я строка, то появится информационное окно

sends=-1??1 <IF> 0 <> <info=t61$GLOBALSENDS[1]> <THEN> textt=%P%N||##GLOBALSENDS<x1>||upd<1> <ENDIF> ;; если буфер обмена не пустой, то произвести замену в содержимом файла под курсором содержимым буфера обмена

sends=2 <IF> Execute(StringInStr('|2|222|24|82|','|GLOBALSENDS<1>|')) > 0 <THEN> GLOBALSENDS<a> <ENDIF> ;; пример проверки сразу нескольких значений

sends=4 <IF> Execute(StringInStr('1|2|4|5','GLOBALSENDS<1>')) > 0 <THEN> GLOBALSENDS<a> <ENDIF> ;; пример проверки сразу нескольких значений

sends=PS<"%P"//1//0>??-1||?#(?m)\.flg$!!(?m)\\read\.me$!!0 <IF> GLOBALSENDS<1> = 11 <THEN> infbx=InfoBox_TEST1 <ENDIF> ;; если в активной панели есть файл flg и файл read.me получить сообщение

sends=zip|rar|7z|ace|arj|cab|gz|jar|lzh|tar|xz|wim??-4 dilog=[combo=BOX36] <IF> Execute(StringInStr('|7z|zip|tar|wim|','|GLOBALCOMBO<1>|')) > 0 <THEN> infbx=||YES||3||170||60 <ELSE> infbx=||NO||3||170||60 <ENDIF> ;; выбрать в диалоге тип архива, если выбран тип 7z, zip, tar, wim - то вывести сообщение "YES", в ином случае "NO"

slist=%WL <IF> <info=f1GLOBALSLIST<1>//> = <info=f1GLOBALSLIST<2>//> <THEN> exect=MsgBox(64+4096,'Результат','Контрольные~~суммы~~совпадают.') <ELSE> exect=MsgBox(48+4096,'Результат','Контрольные~~суммы~~не~~совпадают.') <ENDIF> ;; сравнить контрольные суммы MD5 двух выделенных файлов, в сплывающем окне с ручным закрытием, сообщить результат

slist=%WL||##path<0>||save<%%TCIMG_PATH%%\Files\Lists\BeforeRenaming.txt> global slist=PS<"%P"//1//0>||##path<4>||formt<0!!(?i).*[a-zа-яё]!!> xends=GLOBALSLIST<1>||&&\d.*$!! <IF> 1 <> <info=t61$GLOBALXENDS[1]> <THEN> xends=_ <ENDIF> zlist=$GLOBALSLIST||formt<0!!(?m)([\d]+)\D.*> <IF> 1 <> <info=t61$GLOBALZLIST[1]> <THEN> bends=000 zlist=$GLOBALBENDS <ENDIF> xlist=$GLOBALZLIST||formt<11> aends=GLOBALXLIST<1>||#Sfnc_numplus0 iends=<info=t60$GLOBALAENDS[1]> renms=%WL||$$GLOBALXENDS<1>cntr<GLOBALAENDS<1>|1|GLOBALIENDS<1>>||upd<1> creat=%%TCIMG_PATH%%\Files\Lists\||AfterRenaming||content<GLOBALRENMS<t>>||owrite<1> ;; добавить выделенным файлом продолжение счетчика в конец имени (с возможностью отката)

slist=%WL||##path<0>||save<%%TCIMG_PATH%%\Files\Lists\BeforeRenaming.txt> global slist=PS<"%P"//1//0>||##path<4>||formt<0!!(?i)[a-zа-яё].*!!> xends=GLOBALSLIST<1>||formt<0!!(?m)([\d]+)(\D).*>||&&.*\d!! <IF> 1 <> <info=t61$GLOBALXENDS[1]> <THEN> xends=_ <ENDIF> blist=$GLOBALXENDS xlist=$GLOBALSLIST||&&\D.*!!||formt<11> <IF> 1 <> <info=t61$GLOBALXLIST[1]> <THEN> bends=000 xlist=$GLOBALBENDS <ENDIF> iends=<info=t60$GLOBALXLIST[1]> aends=GLOBALXLIST<1>||#Sfnc_numplus0 renms=%WL||^^cntr<GLOBALAENDS<1>|1|GLOBALIENDS<1>>GLOBALBLIST<1>||upd<1> creat=%%TCIMG_PATH%%\Files\Lists\||AfterRenaming||content<GLOBALRENMS<t>>||owrite<1> ;; добавить выделенным файлом продолжение счетчика в начало имени (с возможностью отката)

slist=[tc=AF-1f] <IF> <info=t51$GLOBALSLIST[1]|USER.BAR> = 1 <THEN> Exit() <ELSE> slist=%WL||#AC:\Test.bar barjn=$GLOBALSLIST||"%p//1//USER.BAR"@CRLF <ENDIF> ;; склеить C:\Test.bar с выделенными *.bar, с сохранением результирующего *.bar в активную панель с именем"USER", выход из программы, если в активной панели уже существует файл USER.BAR (кнопки Test.bar в начале USER.bar)

slist=[tc=AF-1f] <IF> <info=t51$GLOBALSLIST[1]|USER.BAR> = 1 <THEN> Exit() <ELSE> slist=%WL||#Z@CRLFC:\Test.bar barjn=$GLOBALSLIST||"%p//1//USER.BAR" <ENDIF> ;; склеить C:\Test.bar с выделенными *.bar, с сохранением результирующего *.bar в активную панель с именем"USER", выход из программы, если в активной панели уже существует файл USER.BAR (кнопки Test.bar в конце USER.bar)

slist=INI<8//%%COMMANDER_INI%%//TemaColor//NameColor> <IF> GLOBALSLIST<1> = Image <THEN> tcimg=$tmtm_ThemeImage||Image_Black <ELSE> tcimg=$tmtm_ThemeImage||Image <ENDIF> ;; переключение между Светлой и Тёмной темой TС Image

wends=-1||formt<63,54,51> <IF> <info=t60$GLOBALWENDS[1]> <= 3 OR <info=t51$GLOBALWENDS[1]|??sp342> = 1 <THEN> wends=<info=o73[tc=AA]> <ENDIF> GLOBALWENDS<a> ;; если в буфере обмена содержащем текст, есть определенные символы, то отправить в глобальную переменную имя каталога или файла под курсором

xends=<info=x65> delss=PS<$f02\Microsoft\Windows\Recent//1//0//*.lnk|*.txt>||1 delss=PS<$f02\Microsoft\Windows\Cookies//1//0//*.lnk|*.txt>||1 close=GLOBALXENDS<1> inidd=%%COMMANDER_PATH%%\History.ini sends=<info=x60> inidd=%%COMMANDER_PATH%%\History.ini <IF> <info=t51$GLOBALSENDS[1]|32> = 1 <THEN> start=%%COMMANDER_PATH%%\TOTALCMD.EXE <ELSE> start=%%COMMANDER_PATH%%\TOTALCMD64.EXE <ENDIF> ;; удалить указанные файлы в папках Recent и Cookies, закрыть Total Commander, очистить все секции в History.ini, запустить Total Commander


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