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


Запуск команд в зависимости от условий.
<SELECT> <CASE> ... <#> ... <CASE> ... <#> ... <CASEELSE> ... <ENDSELECT>

<SELECT> <CASE> expression1 <#> commands1 ... <CASE> expressionN <#> commandsN <CASEELSE> commands <ENDSELECT>

Параметры:

<SELECT>Тег начала условий.
<CASE>Тег блока.
expression1Условие. Если выражение expression1 истинно, будет выполнено выражение commands1 после <#>.
<#>Тег конца условия блока <CASE>.
commands1Строка команд. Команды и их параметры имеют тот же синтаксис, что и в примерах.
......
<CASE>Тег блока.
expressionNУсловие. Если выражение expressionN истинно, будет выполнено выражение commandsN после <#>.
<#>Тег конца условия блока <CASE>.
commandsNСтрока команд. Команды и их параметры имеют тот же синтаксис, что и в примерах.
<CASEELSE>Тег. [необязательный] Если ни одно из условий <CASE> не не является истинным, то будет выполнено выражение commands.
commandsСтрока команд. [необязательный] Команды и их параметры имеют тот же синтаксис, что и в примерах.
<ENDSELECT>Тег окончания условий.

Примечания:

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

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


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

• Если более, чем одно из выражений <CASE> истинно, то выполнится только первый блок, без проверки истинности последующих выражений <CASE>.

• Если ни одно из условий в <CASE> не является истинным, то выполняется секция <CASEELSE>, если же и она отсутствует, то не выполнится никакой код (кроме выражений для проверки).

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

См. также:

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

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

<SELECT> <CASE> <info=f11%P%N//> = txt OR <info=f11%P%N//> = rar <#> renmm=%P%N||##clpget||owrite<8> <ENDSELECT> ;; если расширение файла под курсором *.txt или *.rar, то переименовать его содержимым буфера обмена (пропустить в случае совпадения имён)

exect=$var_i=[info=x5] <SELECT> <CASE> $var_i > 0 AND $var_i < 5 <#> creat="%p"||Name.txt <CASE> $var_i > 10 AND $var_i < 15 <#> creat="%p"||Name.html <CASEELSE> creat="%p"||Name.ini <ENDSELECT> ;; если в активной панели от 0 до 5 файлов, то создаётся файл Name.txt, если от 10 до 15, то Name.html, иначе Name.ini

sends=-1 <SELECT> <CASE> <info=t51$GLOBALSENDS[1]|(facebook).+> = 1 <#> infbx=InfoBox_TEST1 <CASE> <info=t51$GLOBALSENDS[1]|(youtube).+> = 1 <#> infbx=InfoBox_TEST2 <ENDSELECT> ;; если в содержимом в буфера обмена есть facebook.com , то выдать сообщение №1 , если youtube.com , то сообщение №2, если ни того, ни другого, то ничего не сообщать...

sends=-1 <SELECT> <CASE> <info=t51$GLOBALSENDS[1]|(facebook).+> = 1 OR <info=t51$GLOBALSENDS[1]|(vk).+> = 1 <#> infbx=InfoBox_TEST1 <CASE> <info=t51$GLOBALSENDS[1]|(youtube).+> = 1 <#> infbx=InfoBox_TEST2 <ENDSELECT> ;; если в содержимом в буфера обмена есть facebook.com или vk.com , то выдать сообщение №1 , если youtube.com , то сообщение №2, если ни того, ни другого, то ничего не сообщать...


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