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

Mat*_*der 4 windows command-line findstr windows-7

Findstr应该支持正则表达式,而我使用它的方式则需要使用“或”来检查文件是否以“ .exe”或“ .dll”结尾。但是,我无法使或操作正常进行。使用“ |”时 Windows认为我正在尝试传递上一个命令,并且“ OR”被读为字面上的OR

Mof*_*ofi 5

findstr.exeWindows system32中的目录仅支持非常有限的一组正则表达式字符。在命令提示符窗口中运行会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
Run Code Online (Sandbox Code Playgroud)

并且只有所有以不区分大小写.dll.exe不区分大小写的文件名都应该由findstr命令输出,获取此输出的命令行可能是:

%SystemRoot%\system32\findstr.exe /I /R "\.exe$ \.dll$" FileNames.lst
Run Code Online (Sandbox Code Playgroud)

输出为以下示例行FileNames.lst

C:\Program Files\Internet Explorer\ieproxy.dll
C:\Program Files\Internet Explorer\iexplore.exe
Run Code Online (Sandbox Code Playgroud)

findstr将正则表达式搜索字符串中的空格解释为两个字符串之间的分隔符。因此FINDSTR正则表达式字符串搜索\.dll$\.exe$并返回,其中两个表达式的一个字符串匹配的所有行。

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

%SystemRoot%\system32\findstr.exe /I /R /C:"\.dll$" /C:"\.exe$" FileNames.lst
Run Code Online (Sandbox Code Playgroud)

结果与其他命令行相同。

但是对于此特定任务,根本不需要运行正则表达式搜索,因为findstr还提供了/E仅返回在行末找到搜索到的字符串的行的参数。

%SystemRoot%\system32\findstr.exe /E /I /C:.exe /C:.dll FileNames.lst
Run Code Online (Sandbox Code Playgroud)