If / IfEqual / IfNotEqual / IfLess / IfLessOrEqual / IfGreater / IfGreaterOrEqual

指定在变量与值的比较结果为 true 时执行的一个或多个语句.

过时的: 不推荐在新脚本中使用传统 If 语句. 有关详情, 请参阅脚本语言: If 语句, 请使用 If (表达式) 代替.

IfEqual, Var , Value          ; if Var = Value
IfNotEqual, Var , Value       ; if Var != Value
IfLess, Var , Value           ; if Var < Value
IfLessOrEqual, Var , Value    ; if Var <= Value
IfGreater, Var , Value        ; if Var > Value
IfGreaterOrEqual, Var , Value ; if Var >= Value

参数

Var
变量名. 除了双重引用, 否则必须省略百分号. 与其他命令的输入变量不同, 不支持百分号前缀.
Value
不加引号的文本数字. 变量引用必须用百分号括起来(例如 %var2%). 如果您希望将 Var 与空字符串(空白) 进行比较, 那么可以省略 Value.

备注

如果 VarValue 都为纯数值, 那么它们将被作为数字而不是字符串进行比较. 其他情况下, 它们将被作为字符串按字母顺序进行比较(即字母次序将决定 Var 是大于, 等于或小于 Value).

如果 If 拥有多行, 那么这些行必须用大括号括起来(创建一个区块). 但是, 如果只有一行属于 If, 则大括号是可选的. 例如:

if count <= 0
{
    WinClose Untitled - Notepad
    MsgBox There are no items present.
}

注意类命令的 If 语句允许与一个命令或类命令的控制流语句写在同一行, 但是拼写错误的命令名称将被视为原义文本. 换句话说, 这些都是有效的:

IfEqual, x, 1, Sleep, 1
IfGreater, x, 1, EnvAdd, x, 2

但这些是无效的:

if x = 1 Sleep 1
IfGreater, x, 1, x += 2

One True Brace(OTB) 风格 能用于传统的 if 语句中. 它只能与 If (表达式) 一起使用.

相关提示, 语句 if var [not] between LowerBound and UpperBound 判断变量是否在两个值之间, 而 if var [not] in value1,value2 可以用来判断变量内容是否存在于值列表中.

If (表达式), StringCaseSense, 赋值表达式(:=), if var in/contains, if var between, IfInString, 区块, Else

示例

: 如果 counter 大于或等于 1, 则休止 10 ms.

if counter >= 1
    Sleep, 10

如果 counter 大于或等于 1, 关闭记事本并休止 10 ms.

if counter >= 1   ; 若要执行多行, 请将这些行用大括号括起来:
{
    WinClose, Untitled - Notepad
    Sleep 10
}

本例执行如下:

  1. 如果 MyVar 等于 MyVar2, 显示 "The contents of MyVar and MyVar2 are identical."
  2. 否则如果 MyVar 为空:
    1. 显示 "MyVar is empty/blank. Continue?" 并等待用户输入.
    2. 如果用户按下 "No", 停止进一步检查.
  3. 否则如果 MyVar 不是逗号, 显示 "The value in MyVar is not a comma.".
  4. 否则显示 "The value in MyVar is a comma.".
if MyVar = %MyVar2%
    MsgBox The contents of MyVar and MyVar2 are identical.
else if MyVar =
{
    MsgBox, 4,, MyVar is empty/blank. Continue?
    IfMsgBox, No
        Return
}
else if MyVar != ,
    MsgBox The value in MyVar is not a comma.
else
    MsgBox The value in MyVar is a comma.

如果 Done 既不是空也不是零, 显示 "The variable Done is neither empty nor zero.".

if Done
    MsgBox The variable Done is neither empty nor zero.
unixetc