====== Выражения ======
Выражения используются в [[conditions|условиях]]. Начиная с версии 2.0.10 вычисляемые выражения также могут использоваться во всех параметрах команд Autorun.
Для использования в параметрах команд необходимо, чтобы параметр был в кавычках и непосредственно перед ними
стоял знак "%". В этом случае текст будет трактоваться как вычисляемое выражение. Например:
Set Delay 500
Sleep %"1000 + %Delay%"
# результат вычисления - 1500.
Внутри кавычек для текстовых констант, как и везде, можно использовать кавычки другого типа:
StrLen var %'"Строка_" & 1'
# var => Строка_1
Хотя в выражениях могут использоваться текстовые константы, не обернутые в кавычки, такой вариант оставлен только для совместимости. Настоятельно рекомендуется использовать кавычки повсеместно. Это значительно уменьшит число возможных ошибок.
В выражениях могут использоваться арифметические операции, операция конкатенации "&" строк и логические операции.
Если оба выражения числовые, используется числовое сравнение. Могут использоваться операторы: =, <>, >, <, >=, <=. Для строчного сравнения разрешены только = и <>, сравнение регистронезависимое.
Также разрешены скобки и операторы AND, OR и NOT. Разрешены ключевые слова True/False, которые эквивалентны строкам "1"/"0" соответственно.
Приоритет выполнения операций в порядке понижения:
NOT
* /
+ -
&
< > <= >= = <>
AND OR
**Использование команд в выражениях**
В выражениях возможно использование любых команд Autorun, но смысл имеет использование тех, которые возвращают результат.
Для использования в выражении команды в качестве функции она должна быть записана с использованием скобок и запятой в качестве разделителя параметров. Первый параметр (имя переменной для возвращаемого значения) в этом случае не используется. Переключатели при их использовании нужно передавать в первом параметре в кавычках через пробел, текст параметра должен начинаться с символа "~". В общем виде запись выглядит так:
CommandName(["~/S1 /S2 .. /SN",] Param1, Param2, .. , ParamN)
Пример:
Set zz "AbCdEfxQWERTY"
MsgBox %"StrPos('~/S', %zz%, 'x')" "Case-sens"
# => 7
В выражениях можно использовать вложенные команды:
Set zz " abcdefgh"
MsgBox %"StrLeft(StrTrim(%zz%), 3) & '-' & StrPos(%zz%, 'd') & '-' & (StrPos('123456789', '5'))" "Expr"
# => abc-6-5
Если переменные окружения разворачиваются в параметрах команд (смотрите описания команд), то можно записывать переменную вместе с остальным текстом внутри кавычек. В остальных случаях нужно использовать конкатенацию переменной с текстом:
# переменные окружения разворачиваются в параметре команды
FileExist("%COMMANDER_PATH%\NoClose.exe")
# переменные окружения в параметре команды не разворачиваются
StrLen(%COMMANDER_PATH% & "\NoClose.exe")