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

指定一个变量和一个值比较得出 TRUE 时要执行的命令。当存在多个命令时，将它们括入一个区块。

IfEqual, var, value (同：if var = value)
IfNotEqual, var, value (同：if var <> value) (!= 能用来替代 <>)
IfGreater, var, value (同：if var > value)
IfGreaterOrEqual, var, value (同：if var >= value)
IfLess, var, value (同：if var < value)
IfLessOrEqual, var, value (同：if var <= value)
If var ;如果变量的内容为空或为 0，那么它被视为 false。否则，它为 true。
另外可见：IfInString

#### 参数

var | 变量名称。
value | 原义的字串、数字或者变量引用(例如 %var2%)。Value 可以被省略，如果你想要将 var 与一个空字符串(空白的)相比较。

#### 说明

如果 var 和 value 都是纯粹的数值型，它们将被作为数字比较，而不是作为字符串。否则，它们将作为字符串按字母顺序来比较（就是说，字母的次序将决定 var 是否小于、等于或者大于 value）。译注：A<B

当一个 IF 或者 ELSE 拥有多行时，那些行必须被括入大括号。例如：

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

然而，如果仅有一行属于 IF 或者 ELSE，大括号就是可选的。

如果你使用命令名称类型，那么另一个命令就只能出现在 IF 语句的同一行。换句话说，这些是有效的：

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

但是这些是无效的：

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

单个正确的大括号(OTB)类型不能和这些类型的 IF 语句一起使用。它只能和表达式类型的 IF 语句一起使用。

做一个相关的提示，"if var [not] between LowerBound and UpperBound" 命令检查一个变量是否在两个 values 之间，而 "if var [not] in value1,value2" 能用来检查一个变量的内容是否在 values 列表里存在。

#### 相关命令

IF (expression), StringCaseSense, Assign expression (:=), if var in/contains MatchList, if var between, IfInString, Blocks, Else

#### 范例

    if counter >= 1
        Sleep, 10

    if counter >=1   ;如果一个 IF 有多行，将那些行括入大括号：
    {
        WinClose, Untitled - Notepad
        Sleep 10
    }

    if MyVar = %MyVar2%
        MsgBox MyVar 和 MyVar2 的内容是相同的。
    else if MyVar =
    {
        MsgBox, 4,, MyVar 是空的/空白的。继续？
        IfMsgBox, No
            Return
    }
    else if MyVar <> ,
        MsgBox value 在 MyVar 里不是一个逗号。
    else
        MsgBox value 在 MyVar 里是一个逗号。

    if Done
        MsgBox 变量 Done 即不为空也不为零。

翻译：天堂之门 menk33@163.com 2008年11月14日