- 版本 v1.1.15.01
- 指南和概述
- 常见问题(FAQ)
- 按字母排序的命令和函数索引
- AutoHotkey 脚本展示
- 变更和新功能
- 基本用法和语法
- 迁移到 AutoHotkey 1.1(AutoHotkey_L)
- 环境管理
- 本机代码互操作
- 文件、目录和磁盘管理
- Drive
- DriveGet
- DriveSpaceFree
- FileAppend
- FileCopy
- FileCopyDir
- FileCreateDir
- FileCreateShortcut
- FileDelete
- FileEncoding [AHK_L 42+]
- FileGetAttrib
- FileGetShortcut
- FileGetSize
- FileGetTime
- FileGetVersion
- FileInstall
- FileMove
- FileMoveDir
- FileOpen [AHK_L 42+]
- FileReadLine
- FileRead
- FileRecycle
- FileRecycleEmpty
- FileRemoveDir
- FileSelectFile
- FileSelectFolder
- FileSetAttrib
- FileSetTime
- IfExist / IfNotExist
- IniDelete
- IniRead
- IniWrite
- Loop(文件和文件夹)
- Loop(读取文件内容)
- SetWorkingDir
- SplitPath
- 流程控制
- 内置函数
- GUI、MsgBox、InputBox 及其他对话框
- 鼠标和键盘
- 鼠标和键盘
- #InstallKeybdHook
- #InstallMouseHook
- #KeyHistory
- BlockInput
- Click [v1.0.43+]
- ControlClick
- ControlSend / ControlSendRaw
- CoordMode
- GetKeyState
- KeyHistory
- KeyWait
- Input
- MouseClick
- MouseClickDrag
- MouseGetPos
- MouseMove
- Send / SendRaw / SendInput / SendPlay / SendEvent: 发送按键和点击
- SendLevel [v1.1.06+]
- SendMode [v1.0.43+]
- SetDefaultMouseSpeed
- SetKeyDelay
- SetMouseDelay
- SetCapsLockState/SetNumLockState/SetScrollLockState
- SetStoreCapslockMode
- 数学相关
- 屏幕管理
- 杂项命令
- 进程管理
- 注册表管理
- 声音命令
- 字符串管理
- 窗口管理
- 控件
- 窗口组
- #WinActivateForce
- DetectHiddenText
- DetectHiddenWindows
- SetTitleMatchMode
- SetWinDelay
- StatusBarGetText
- StatusBarWait
- WinActivate
- WinActivateBottom
- WinClose
- WinGet
- WinGetActiveStats
- WinGetActiveTitle
- WinGetClass
- WinGetPos
- WinGetText
- WinGetTitle
- WinHide
- WinKill
- WinMaximize
- WinMinimize
- WinMinimizeAll / WinMinimizeAllUndo
- WinMove
- WinRestore
- WinSet
- WinSetTitle
- WinShow
- WinWait
- WinWaitActive / WinWaitNotActive
- WinWaitClose
- #指令
Loop(普通)
重复执行一系列命令:可以指定表示重复次数的数字或直到遇到 break。
Loop [, Count]
参数
- Count
执行循环体 (重复) 的次数. 如果省略, Loop 会无期限继续, 直到遇到 break 或 return.
如果 Count 是一个变量引用例如 %ItemCount%, 每当此变量为空或包含小于 1 的数字时, 循环会被完全跳过.
由于必须支持 文件模式循环, Count 不可以为表达式. 不过, 和所有的非表达式参数一样, 通过在表达式之前加上 % 和空格可以强制使用它. 例如:
Loop % Count + 1
。此时, 表达式仅在循环开始之前被求值一次.
备注
循环命令后通常跟着 区块, 这是组成循环 体 的语句的集合. 不过, 在单语句的循环中可以不使用区块 (用于此目的时 "if" 与其相匹配的 "else" 一起被视为单语句).
此命令的常见用途是无限循环, 在循环 体 中某个地方使用 break 命令来决定何时停止循环.
在循环中鼓励使用 break 和 continue 代替 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 }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论