0

我正在寻找一种更明确的方法来定义文件夹中文件的循环。以下面的循环为例。它正在寻找text*.txt文件。但我想定义一个更具体的通配符搜索,可以找到诸如text1.txt,之类的文件textA.txt,但不是text1 - COPY.txt

我不熟悉 AHK 通配符语法,但也许我正在寻找的可以使用正则表达式来解释,我正在寻找"text.\.txt"......第一个.(点)匹配任何单个字符的位置(而不是"text.*\.txt"点星号的位置是什么)

loop, % C:\Users\username\Downloads\text*.txt
  {
    ; do arbitrary tasks in loop.
  }
4

1 回答 1

2

我假设loop, % C:\Users\username\Downloads\text*.txt是一个错字,因为它实际上甚至不会编译。您需要在表达式中为字符串加上引号,但我相信您已经知道这一点。

不过,您可能不知道您正在使用已弃用的旧文件循环。
切换到现代文件循环

关于你的问题,我想说你能做的最好的就是在循环中进一步过滤。然后,您还可以使用任何您希望的方法进行过滤。
这是您提到的正则表达式的示例:

Loop, Files, % "C:\Users\username\Downloads\text*.txt"
    if (A_LoopFileName ~= "text.\.txt")
        MsgBox, % "This file passed the additional filter: " A_LoopFileName

如果您不熟悉~=AHK 中的运算符,它是 . 的简写RegExMatch()

于 2020-09-20T00:06:13.267 回答