Loop (标准的)


重复地执行一系列命令:可以是指定了数字的重复次数或直到遇上了 break

Loop [, Count]

参数

Count

执行 loop(循环)多少次(反复)。如果省略,循环无限期地继续下去,直到遇上一个 breakreturn

如果 Count 是一个引用变量例如 %ItemCount% ,每当变量为空或包含的数字小于 1 ,循环将被整个地跳过。

由于必须支持 file-pattern loops(文件类型循环),Count 不可以是一个表达式。不过,和所有非表达式参数一样,一个表达式可以通过在其前面加上一个 % 和一个空格来强制地被使用。例如:Loop % Count + 1 。在此例中,表达式仅被计值一次,就在循环开始前。

注意

循环命令通常后跟一个 block (区块),它是一些语句的集合,组成循环部分。不过,循环仅有一条语句时,不需要一个区块(一个 "if" 以及它的 "else" 复合语句在这种用途时算作单独一个命令)。

此命令通常的用法是一个无限循环,其在循环部分的某处使用 break 命令来决定何时停止循环。

在一个循环里鼓励使用 breakcontinue 来代替 goto ,由于它们通常使一个脚本更加易懂和更具可维护性。要创建一个"While" loop ,让一个 IF 语句作为循环部分的首行语句从而有条件地分配 break 命令。要创建一个"Do...While" loop ,除了要把 IF 语句放在循环部分语句的末尾外,使用的是相同的手法。

内置变量 A_Index 包含当前循环重复的次数。循环的 body (循环体) 第一次执行时,它包含 1 。第二次时,它包含 2 ;以此类推。如果一个内部循环装在一个外部循环中,内部循环拥有优先权使用 A_Index 。A_Index 能用在所有类型的循环内部,包括 file-loopsregistry-loops ;但是 A_Index 在循环外部包含 0。

One True Brace (OTB) style(单 个正确的大括号类型)可以随意地和标准循环一起使用(但不可以是例如 file-pattern(文 件类型) 和 parsing(分解) 这种特化的循环)。例如:

Loop {
...
}
Loop %RepeatCount% {
...
}

特化的循环:循环能被用来自动地获取文件、文件夹或注册表项(一次一个)。详见 file-loopregistry-loop 。此外,file-reading loops 能对一整个文件的内容进行操作,一次一行。最后,parsing loops 能对一个限定的字串内部的独立部分进行操作。

相关命令

While-loop, Files-and-folders loop, Registry loop, File-reading loop, Parsing loop, Break, Continue, Blocks

示例

Loop, 3
{
MsgBox, 重复的次数是 %A_Index%. ; A_Index 将是 1 、2 ,然后是 3
Sleep, 100
}
Loop
{
if a_index > 25
break ; 终止循环
if a_index < 20
continue ; 跳过以下部分并开始一次新的循环
MsgBox, a_index = %a_index% ; 此对话框将仅在 A_Index 是数字 20 到 25 时显示
}
翻译:天堂之门 menk33@163.com 2008年8月5日