排除某些其他文件中包含的键字符串文件的所有行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排除某些其他文件中包含的键字符串文件的所有行相关的知识,希望对你有一定的参考价值。

我正在尝试编写一个Windows批处理文件,其中有两个文件正在关注中。

第一个文件all.err包含失败测试用例的日志,如下所示:

`CHECK:FAIL,"It should have been DEST`"
`CHECK:FAIL,"It should have been XYZA`"
`CHECK:FAIL,"It should have been PRTS`"
`CHECK:FAIL,"It should have been ABCD`"
.....................................

我们有另一个文件exclude.txt,每行存储一些字符串,如:

XYZA
ABCD

我正在尝试编写一个Windows批处理脚本,它可以列出all.err中不包含exclude.txt中任何单词的所有行。

我无法理解这是如何实现的 - 任何想法?

答案

使用for循环时,您需要首先浏览排除文件,获取每一行,然后在日志文件中从搜索中排除这些元变量:

@echo off
for /f "delims=" %%i in (exclude.txt) do (
     for /f "delims=" %%b in ('type all.log ^| findstr /V "%%i"') do echo(%%b
)

不需要第一个do代码块,为了便于阅读,我只是简单地发布它,它可以是:

@echo off
for /f "delims=" %%i in (exclude.txt) do for /f "delims=" %%b in ('type all.log ^| findstr /V "%%i"') do echo(%%b
另一答案

SomethingDark编写的此任务只需要一个Windows命令行:

%SystemRoot%System32findstr.exe /I /L /V /G:exclude.txt all.err

在Windows命令提示符窗口findstr /?中运行的帮助输出解释了参数/I(不区分大小写),/L(搜索字符串是文字字符串),/V(反向匹配输出),/G(从文件中获取搜索字符串)。

以上是关于排除某些其他文件中包含的键字符串文件的所有行的主要内容,如果未能解决你的问题,请参考以下文章

如何传递文件中包含的命令行参数并保留该文件的名称?

使用 .bat 文件在目录中包含的多个文件中查找和替换字符串

php PHP:获取我的images目录中包含的所有文件名列表[重复]

另一个文件中包含的 T4 缩进代码

git列出本地文件夹中包含的所有repos的所有活动分支

错误 ITMS-90283:配置文件无效。捆绑包中包含的配置文件无效 [缺少代码签名证书]