如何从Windows命令提示符将OR运算符与命令FINDSTR一起使用?
如何从Windows命令提示符将OR运算符与命令FINDSTR一起使用?,windows,command-line,findstr,Windows,Command Line,Findstr,Findstr应该支持正则表达式,而我使用它的方式需要一个或来检查文件是否以.exe或.dll结尾。但是,我无法使或操作正常工作。Windows考虑使用|,我尝试通过管道传输上一个命令,并且在Windows system32目录中,或被读取为literal或findstr.exe仅支持非常有限的正则表达式字符集。在命令提示窗口中运行findstr/?会显示此控制台应用程序的帮助,其中还列出了支持的正则表达式字符及其含义 但正如上面的评论中所解释的那样,可以在命令行上指定多个搜索字符串来构建一个简
Findstr
应该支持正则表达式,而我使用它的方式需要一个或来检查文件是否以.exe
或.dll
结尾。但是,我无法使或操作正常工作。Windows考虑使用|
,我尝试通过管道传输上一个命令,并且在Windows system32目录中,或
被读取为literal或findstr.exe
仅支持非常有限的正则表达式字符集。在命令提示窗口中运行findstr/?
会显示此控制台应用程序的帮助,其中还列出了支持的正则表达式字符及其含义
但正如上面的评论中所解释的那样,可以在命令行上指定多个搜索字符串来构建一个简单的或表达式
%SystemRoot%\system32\findstr.exe /I /R /C:"\.dll$" /C:"\.exe$" FileNames.lst
如果列表文件FileNames.lst
包含
C:\Program Files\Internet Explorer\ieproxy.dll
C:\Program Files\Internet Explorer\iexplore.exe
C:\Program Files\Internet Explorer\iexplore.exe.mui
而所有以.dll
或.exe
结尾的文件名都应通过命令findstr输出,获取此输出的命令行可以是:
%SystemRoot%\system32\findstr.exe /I /R "\.exe$ \.dll$" FileNames.lst
输出用于FileNames.lst
中的示例行:
C:\Program Files\Internet Explorer\ieproxy.dll
C:\Program Files\Internet Explorer\iexplore.exe
正则表达式搜索字符串中的空格由findstr解释为两个字符串之间的分隔符。因此,findstr使用正则表达式字符串\.dll$
和\.exe$
进行搜索,并返回两个表达式之一与字符串匹配的所有行
另一种方法是在命令行上多次使用参数/C:“…”
,当正则表达式搜索字符串包含一个或多个空格时,这是必需的,这些空格应作为文本字符包含在搜索表达式中
%SystemRoot%\system32\findstr.exe /I /R /C:"\.dll$" /C:"\.exe$" FileNames.lst
结果与上面的其他命令行相同
但是对于这个特定的任务,根本不需要运行正则表达式搜索,因为findstr还提供了参数/E
,用于仅返回在行尾找到搜索字符串的行
%SystemRoot%\system32\findstr.exe /E /I /C:.exe /C:.dll FileNames.lst
关于使用“…”
或/C:“…”
的区别的简要说明:
“regexp1 regexp2 regexp3”
表示搜索字符串与三个空格分隔的正则表达式之一匹配的行。另外,还可以使用选项/R
将两个空格之间的三个字符串显式解释为正则表达式。建议这样做,以使findstr
和每个阅读器100%清楚地知道搜索字符串被解释为正则表达式/L“word1 word2 word3”
表示搜索一行,该行中的字符串由三个空格分隔的逐字解释字符串之一匹配。使用的选项/L
明确强制将两个空格之间的三个字符串解释为文字字符串,而不是正则表达式/C:“word 1”/C:“word 2”/C:“word 3”
表示搜索一行,该行中的字符串与三个按字面解释的字符串之一匹配,其中空格字符被解释为空格。另外,还可以使用选项/L
将三个搜索字符串显式解释为文本字符串。建议这样做,以使findstr
和每个读卡器100%清楚地知道搜索字符串被解释为文本字符串/R/C:“reg exp 1”/C:“reg exp 2”/C:“reg exp 3”
表示搜索一行,该行的字符串与三个正则表达式字符串中的一个匹配,其中空格字符被解释为空格。选项/R
显式强制将三个字符串解释为正则表达式,将空格解释为空格findstr
使用空格分隔或
匹配的搜索模式,例如findstr/ri“\.exe$\.dll$”
。如果模式本身有空格,则可以指定多个/c
模式,例如findstr/ri/c:'%1\.exe$“/c:'%2\.dll$”
。