Regex 在执行Windows文件搜索时,如何忽略前x个字符?

Regex 在执行Windows文件搜索时,如何忽略前x个字符?,regex,windows,search,wildcard,Regex,Windows,Search,Wildcard,环境:Windows 2003服务器 问题: 在执行Windows文件搜索时,如何忽略文件名的前x个字符? 我正在尝试查找其名称包含特定单词的所有文件,但问题是,我不想在每个文件名的前10个字母中列出包含搜索短语的文件 我该怎么做?有什么工具可以让我这么做吗? 我发现了以下工具GREPWIN:,它允许使用REGEX进行文件搜索,但我不知道如何使用REGEX忽略前10个字母 示例: 搜索词:测试 档案: testteblah.TXT-此项将被忽略 BLAHBLAHBLtest.TXT-这一个应该

环境:Windows 2003服务器

问题: 在执行Windows文件搜索时,如何忽略文件名的前x个字符? 我正在尝试查找其名称包含特定单词的所有文件,但问题是,我不想在每个文件名的前10个字母中列出包含搜索短语的文件

我该怎么做?有什么工具可以让我这么做吗? 我发现了以下工具GREPWIN:,它允许使用REGEX进行文件搜索,但我不知道如何使用REGEX忽略前10个字母

示例:

搜索词:测试

档案:

  • testteblah.TXT-此项将被忽略

  • BLAHBLAHBLtest.TXT-这一个应该显示在搜索中

搜索结果:

BLAHBLAHBLtest.TXT

只需消耗(或要求)至少有十个字符必须在测试的措辞之前:

.{10}test

这个正则表达式之所以有效,是因为如果没有10个字符,就不会发生匹配,然后进行
测试

在网上做了一些研究之后,我得出了以下正则表达式,可以忽略前10个字母: (?
@ECHO-OFF)
SETLOCAL
设置“sourcedir=U:\sourcedir”
对于/f“delims=“%%a IN('dir/s/b/a-d”%sourcedir%\*test**“)DO(
SETLOCAL ENABLEDELAYEDEXPANSION
设置“n10=%%~na”
设置“n10=!n10:~0,10!”
设置“n10a=!n10:测试=!”
如果/i“!n10a!”eq“!n10!”回显%%a
端部
)
后藤:EOF
这里有一个简单的批处理作业来执行该任务,它不使用regex.soz

dir/s/b
生成匹配文件名列表。这些文件名由
for
命令逐个处理,如下所示:

选择名称部分的前10个字符,然后将这10个字符中的任何字符串
test
替换为空。如果结果没有变化,则显示文件名

当然,您可以用
%1
替换整个
测试
,并作为

本批试验

  • test
    替换为
    zork
    puffin
    或任何内容
如果愿意,您还可以将
10
替换为不同长度选择的参数,或者将directoryname作为参数


要在找到的文件中搜索,可以替换

ECHO %%~a

这将显示文件中包含目标字符串的行(但有关
find
部分如何工作的详细信息,请参阅
findstr
文档-您不指明要查找的内容)

或与

(
 findstr "thingtosearchfor" "%%~a" >nul
 if not errorlevel 1 ECHO %%~a
)
如果要显示要查找的文本所在的文件名


请注意,括号在第二种情况下很重要,因为它是一个多行命令,在我测试它的第一次时是可选的,但它不起作用。尽管如此,以下命令仍然有效:(?@jjj您使用了哪个解析器?我使用了
.Net
的解析器。我甚至没有看到.Net的选项,它在PHP和Python中工作,我在使用PowerGREP工具的搜索中成功地使用了上面的正则表达式。这确实是一个非常好的解决方案,因为它不需要任何第三方工具…我将此标记为已接受的答案。Magoo,可以吗您还发布了一个脚本,用于在文件内容中进行搜索?所以,不仅仅是文件名?
(
 findstr "thingtosearchfor" "%%~a" >nul
 if not errorlevel 1 ECHO %%~a
)