Исключить все строки файла ключевых строк, содержащихся в каком-либо другом файле - PullRequest
0 голосов
/ 14 апреля 2019

Я пытаюсь записать пакетный файл 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.

Я не могу понять, как это можно реализовать - любая идея?

Ответы [ 2 ]

6 голосов
/ 14 апреля 2019

Для этой задачи необходима только одна командная строка Windows, написанная SomethingDark :

%SystemRoot%\System32\findstr.exe /I /L /V /G:exclude.txt all.err

Вывод справки при запуске в окне командной строки Windows findstr /? объясняетпараметры /I (регистр i нечувствителен), /L (строки поиска: l итерационные строки), /Vv иначе совпадают выходные данные), /G ( g и поиск строк из файла).

0 голосов
/ 14 апреля 2019

При использовании цикла 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...