如何在Windows 7命令提示符下的findstr命令中使用OR运算符?

时间:2015-03-17 15:57:25

标签: windows command-line windows-7 findstr

Findstr应该支持正则表达式和我使用它的方式我需要有一个'或'来检查文件是否以“.exe”或“.dll”结尾。但是,我无法使用或操作。使用'|'时windows认为我试图管道上一个命令,'OR'读作字面意思OR

1 个答案:

答案 0 :(得分:4)

Windows system32目录中的

findstr.exe仅支持一组非常有限的正则表达式字符。在命令提示符窗口findstr /?中运行会导致获得此控制台应用程序的显示帮助,列出支持的正则表达式字符及其含义。

但正如eryksun在他的评论中所解释的那样,可以在命令行上指定多个搜索字符串来构建一个简单的OR表达式。

如果列表文件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$进行搜索,并返回两个表达式中的一个与字符串匹配的所有行。

OR或两个或多个正则表达式字符串的另一种方法是在命令行上多次使用参数/C:"...",这在正则表达式搜索字符串包含1个或多个应作为文字字符包含的空格时是必需的(s )在搜索表达式中。

%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