- 版本 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
- #指令
If var [not] in/contains value1,value2,...
检查变量的内容是否匹配列表中的某项。
if Var in MatchList if Var not in MatchList if Var contains MatchList if Var not contains MatchList
参数
- Var
需要被检查的 变量 名称. 对于 "in" 运算符, 需要准确匹配列表中的某项. 对于 "contains" 运算符, 会更容易形成匹配: 只要列表中的某项作为子字符串包含于 Var 中.
- MatchList
逗号分隔的字符串列表, 其中的每个字符串都将与 Var 的内容进行比较以寻找匹配. 在分隔逗号周围的任何空格或 tab 都是有意义的, 这表示它们也是匹配字符串的一部分. 例如,如果 MatchList 被设置为
ABC , XYZ
,这时 Var 必须包含带有尾随空格的 ABC 或带有前导空格的 XYZ 才形成匹配。在匹配列表中两个连续的逗号产生单个原义逗号. 例如,后面的匹配列表会在 string1 的末尾产生单个原义逗号:
If Var In string1,,,string2
。同样地,后面的匹配列表仅包含其中含有一个原义逗号的单个项目:If Var In single,,item
。要在列表中包含空的项目,那么像这个例子那样把逗号作为首个字符:If Var In ,string1,string2
(用于“contains”运算符时,由于在所有字符串中都可以找到空项,所以空项将总是会形成匹配)。因为 MatchList 中的每一项并不是作为独立的参数, 所以此列表可以完整的包含在一个变量中. 事实上, 如果此列表的长度超过 16383, 那么列表的全部或部分必须包含在变量中以变量表示, 因为这个长度是任何脚本行的最大长度. 例如,MatchList 可以由
%List1%,%List2%,%List3%
组成,其中的每个子列表包含了用来匹配词组的一个大的列表。列表中任何长度超过 16384 字符的单个项目, 超出长度的那些字符将被视为一个新列表项. 因此, 通常最好避免包含这样的项目.
备注
比较总是按字母顺序进行, 而不是作为数字. 例如, 字符串 "11" 不会匹配列表项 "11.0".
除了支持搜索多个字符串 (其中任何一个都将形成匹配) 外, "contains" 运算符的作用与 IfInString/IfNotInString 相同.
可以使用 StringCaseSense On
来设置在比较时区分大小写。
如果 MatchList 较长, 可以通过 延续片段 的方法将其分解成较短的几行, 这样可以增加可读性和可维护性.
运算符 "between", "is", "in" 和 "contains" 不支持用于 表达式 中.
相关
if var between, IfEqual/Greater/Less, IfInString, StringCaseSense, 区块, Else
示例
if var in exe,bat,com MsgBox The file extension is an executable type. if var in 1,2,3,5,7,11 ; 避免在列表中添加了空格. MsgBox %var% is a small prime number. if var contains 1,3 ; 注意这里把值作为字符串而不是数字进行比较. MsgBox Var contains the digit 1 or 3 (Var could be 1, 3, 10, 21, 23, etc.) if var in %MyItemList% MsgBox %var% is in the list. InputBox, UserInput, Enter YES or NO if UserInput not in yes,no MsgBox Your input is not valid. WinGetTitle, active_title, A if active_title contains Address List.txt,Customer List.txt MsgBox One of the desired windows is active. if active_title not contains metapad,Notepad MsgBox But the file is not open in either Metapad or Notepad.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论