检查变量的内容是否匹配列表中的某项。
if Var in MatchList if Var not in MatchList if Var contains MatchList if Var not contains MatchList
需要被检查的 变量 名称. 对于 "in" 运算符, 需要准确匹配列表中的某项. 对于 "contains" 运算符, 会更容易形成匹配: 只要列表中的某项作为子字符串包含于 Var 中.
逗号分隔的字符串列表, 其中的每个字符串都将与 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.