重复地执行一系列命令直到指定的 expression(表达式) 值为 false(假).
While Expression
Expression | 任何合法的 expression(表达式)。例如:while x < y |
每次循环之前表达式的值都会被计算一次。如果表达式的值为 true(真) (即除了空字符串或者数值 0 之外的任何其他结果),那么循环体将被执行;否则,脚本跳至循环体之后一行执行。
一个 while-loop 之后通常有一个 block(块),它是循环 body(体) 语句的集合。不过,循环仅有一条语句时不需要一个块(一个 "if" 以及它的 "else" 用作这种目的算作一条语句)。
One True Brace (OTB) 编码风格可以被使用,它允许开括号出现在语句的同一行而不是下面。例如:while x < y {
内置变量 A_Index 记录了当前循环执行的次数。循环表达式和循环体第一次执行时它为 1。第二次执行时它为 2;依次类推。如果一个内部循环在一个外部循环中,内部循环优先使用 A_Index。A_Index 在任何类型的循环内部工作,但是在循环外它被置为 0 。
和所有循环相同,Break 可以被用来提前结束循环。还有,Continue 可以被用来跳过当前循环的剩余部分。这时 A_Index 加 1,循环表达式被重新计算。如果它认为 true(真),新的循环开始;否则循环结束。
专用循环:循环可以被用于自动获取文件,文件夹或者注册表项(一次一个)。详见 file-loop 和 registry-loop 。另外,file-reading loops 能够操作一个文件的所有内容,一次一行。最后,parsing loops 能够操作一个被分隔字符串中的独立部分。
Break, Continue, Blocks, Loop, Files-and-folders loop, Registry loop, File-reading loop, Parsing loop, If (expression)
; 当用户拖曳鼠标左键时,一个 ToolTip(提示框) 在拖拽区域内显示区域的大小。
CoordMode, Mouse, Screen
~LButton::
MouseGetPos, begin_x, begin_y
while GetKeyState("LButton")
{
MouseGetPos, x, y
ToolTip, % begin_x ", " begin_y "`n" Abs(begin_x-x) " x " Abs(begin_y-y)
Sleep, 10
}
ToolTip
return