如何从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$”