# 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.

## 备注

如果 Var 和 Value 都为纯数值, 那么它们将被作为数字而不是字符串进行比较. 其他情况下, 它们将被作为字符串按字母顺序进行比较(即字母次序将决定 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.

dftg