Loop(普通)

重复执行一系列命令:可以指定表示重复次数的数字或直到遇到 break

Loop [, Count]

参数

Count

执行循环体 (重复) 的次数. 如果省略, Loop 会无期限继续, 直到遇到 breakreturn.

如果 Count 是一个变量引用例如 %ItemCount%, 每当此变量为空或包含小于 1 的数字时, 循环会被完全跳过.

由于必须支持 文件模式循环, Count 不可以为表达式. 不过, 和所有的非表达式参数一样, 通过在表达式之前加上 % 和空格可以强制使用它. 例如:Loop % Count + 1。此时, 表达式仅在循环开始之前被求值一次.

备注

循环命令后通常跟着 区块, 这是组成循环 的语句的集合. 不过, 在单语句的循环中可以不使用区块 (用于此目的时 "if" 与其相匹配的 "else" 一起被视为单语句).

此命令的常见用途是无限循环, 在循环 中某个地方使用 break 命令来决定何时停止循环.

在循环中鼓励使用 breakcontinue 代替 goto, 因为它们通常可以让脚本更容易理解和维护. 要创建 "Do...While" 循环, 在循环 的最后一个语句中使用 IF 语句, 在其中根据条件执行 break 命令. 可以使用相同的方法创建 "While" 循环, 但是应该使用 While 命令代替.

内置变量 A_Index 包含当前循环重复的次数。首次执行循环时其值为 1。第二次时其值为 2;依此类推。如果一个内层循环包含在一个外层循环中,那么内层循环具有优先权。A_Index 在所有类型的循环中都有效, 包括 文件循环注册表循环; 但是在循环外部时 A_Index 值为 0.

在普通循环中可以使用 One True Brace (OTB) 风格 (但不适用于专用循环例如 文件模式解析). 例如:

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

专用循环: 循环可以用来自动获取文件, 文件夹或注册表项 (每次一个). 请参阅文件循环注册表循环了解详细信息。此外, 文件读取循环 可以对整个文件的内容进行操作, 每次一行. 最后, 解析循环 可以对包含在可分隔的字符串中的单独片段进行操作.

相关

Until, While 循环, For 循环, 文件和文件夹循环, 注册表循环, 文件读取循环, 解析循环, Break, Continue, 区块

示例

Loop, 3
{
    MsgBox, Iteration number is %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% ; 这里将仅显示数字 20 到 25
}