# Loop (标准的)

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

Loop [, Count]

#### 参数

Count | 执行 loop(循环)多少次(反复)。如果省略，循环无限期地继续下去，直到遇上一个 break 或 return 。 如果 Count 是一个引用变量例如 %ItemCount% ，每当变量为空或包含的数字小于 1 ，循环将被整个地跳过。 由于必须支持 file-pattern loops(文件类型循环)，Count 不可以是一个表达式。不过，和所有非表达式参数一样，一个表达式可以通过在其前面加上一个 % 和一个空格来强制地被使用。例如：Loop % Count + 1 。在此例中，表达式仅被计值一次，就在循环开始前。

#### 注意

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

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

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

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

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

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

特化的循环：循环能被用来自动地获取文件、文件夹或注册表项(一次一个)。详见 file-loop 和 registry-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日