在我们重复做一些事情的时候,就需要使用循环了。而 AHK 正是能将复杂的手动工作自动化的工具,循环自然必不可少。但 AHK 中的循环也是多种多样的,我们慢慢道来。
最简单的循环
最简单的情况,我们知道要循环多少次,比如想连续按下 10 次回车键:
Loop, 10
{
Send, {Enter}
}
这样就可以了。在 Loop 后加上要循环的次数,然后大括号里边就是要循环执行的语句。当然我们可以先把循环的次数放进一个变量,这样更灵活些:
count := 10
Loop, %count%
{
Send, {Enter}
}
可以在循环体中使用 A_Index 来获取当前循环的次数。
或者有可能我们想一直循环执行:
Loop
{
Send, {Enter}
Sleep, 1000
}
这个就是死循环了,如果脚本不退出就会一直执行,某些情况我们确实需要这样。但更多情况,我们需要在满足某个条件时结束循环:
; 这个 stop 变量会在代码的其他地方修改,比如在某个定时器里
stop := false
Loop
{
Send, {Enter}
Sleep, 1000
if (stop)
{
break
}
}
break 是用来退出循环的,continue 是用来结束当前循环,进入下一次循环的。这和其他语言都一致。
Loop Until 循环
上边的最后一种用法,即满足某个条件时结束循环,也可以用 Until 来实现:
stop := false
Loop
{
Send, {Enter}
Sleep, 1000
}
Until stop
看起来比刚才的要简洁一些。
While 循环
有些时候我们需要先判断条件,然后再决定是否要循环,这样虽然用 Loop 也能实现,但有些别扭,这时就可以用 While 循环了。
count := 0
while (count < 10)
{
Send, {Enter}
Sleep, 1000
count++
}
和
count := 0
Loop
{
if (count >= 10)
{
break
}
Send, {Enter}
Sleep, 1000
count++
}
是等同的,使用哪个就看自己的习惯了。
更多内容
有些时候我们需要循环读取数组、读取字符串中的子字符串、读取文件内容、遍历目录下的文件甚至遍历注册表等,AHK 中都有很方便的用法,而无需让我们在 Loop 里写复杂的逻辑,我们会在之后的文章中了解到。
付费解决 Windows、Linux、Shell、C、C++、AHK、Python、JavaScript、Lua 等领域相关问题,灵活定价,欢迎咨询,微信 ly50247。