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 与一个空字符串(空白的)相比较。

说明

如果 varvalue 都是纯粹的数值型,它们将被作为数字比较,而不是作为字符串。否则,它们将作为字符串按字母顺序来比较(就是说,字母的次序将决定 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日