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


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

<SWITCH> value <CASE> expression1 <#> commands1 ... <CASE> expressionN <#> commandsN <CASEELSE> commands <ENDSWITCH>

Параметры:

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

Примечания:

• Теги, условия и команды разделяются пробелом.
• Может быть задействовано несколько блоков <CASE> expression <#> commands

expression может включать в себя:
  - одно значение (5) - value будет сравниваться со значением 5.
  - перечисление значений (5 OR 10 OR 28 ...) - value будет сравниваться со значениями 5, 10, 28
  - диапазон значение (5 TO 10) - value будет сравниваться со значениями 5, 6, 7, 8, 9, 10
  - совместное использование диапазонов и перечислений (1 TO 4 OR 7 TO 9 OR 28) - value будет сравниваться со значениями 1, 2, 3, 4, 7, 8, 9, 28

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

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

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

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

См. также:

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

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

<SWITCH> [info=s32] <CASE> 1 OR 2 OR 12 <#> bufsr=##зима <CASE> 3 TO 5 <#> bufsr=##весна <CASE> 6 TO 8 <#> bufsr=##лето <CASE> 9 TO 11 <#> bufsr=##осень <ENDSWITCH> infbx=||МЕСЯЦ~~В~~БУФЕРЕ||3||200||40 ;; записать в буфер обмена месяц (лето)

<SWITCH> [info=s6] <CASE> "WIN_XP" OR "WIN_XPe" <#> start=%%WINDIR%%\system32\Restore\rstrui.exe <CASEELSE> runcm=11||rstrui <ENDSWITCH> ;; вызов диалога восстановления системы, относительно версии

<SWITCH> [info=s6] <CASE> "WIN_XP" OR "WIN_XPe" <#> start=taskschd.msc <CASEELSE> runcm=11||dfrgui <ENDSWITCH> ;; вызов диалога восстановления системы, относительно версии

<SWITCH> [info=x18] <CASE> 0 OR 1 <#> tcimg=$cm905 buttn=TInpComboDlg||x|$h|$r{F2} <CASE> 3 <#> tcimg=$cm905 tcimg=$cm905 buttn=TDLGUNZIP||+tcTCUNZPACK4|$h buttn=TDLG2FILEACTIONMIN||+tcTCPACKD3 <CASE> 2 <#> tcimg=$cm905 buttn=TCheckEditBox||x|$v|$j+tcTCCOPYFTP2!!1||+tcTCCOPYFTP5 <ENDSWITCH> ;; копировать в другую панель объекты (запуск различных диалогов, в зависимости от контекста панели)

<SWITCH> [info=x18] <CASE> 0 OR 1 <#> tcimg=$cm906 buttn=TInpComboDlg||x|$h|$r{F2} <CASEELSE> tcimg=$cm906 <ENDSWITCH> ;; переместить в другую панель объекты (при открытом FTP и архиве не производить перемещение)

sends=@<info=v0%%PROGRAMFILES%%\Internet~~Explorer\iexplore.exe>||&&(\d).*!!$1 <SWITCH> GLOBALSENDS<1> <CASE> 8 <#> exect=$var_su='http://ya.ru!!Explorer' <CASE> 9 <#> exect=$var_su='http://www.mail.ru' <ENDSWITCH> brwsr=$var_su ;; в зависимости от версии браузера открыть разные ссылки, если IE версии 9 - то яндекс, а если 8 то майл ру


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