Пакетный файл для печати первого совпадения результатов findstr только с текстовым файлом

Я пытаюсь написать пакетный файл, который читает список из файла A.txt, затем проверяет файл C.txt, если совпадение существует, если совпадение не существует, напишите первую совпадающую строку только из файла B.txt в файл C.txt.

пример файлаA.txt

aaa1
aaaa
aaaa4
bbb
ccc12

пример файла B.txt

aaa1 some text
aaa1 blah bla
aaa1 .r
aaaa some info
aaaa blah bla
aaaa4 some name
bbb some name to
bbb more blah blah
ccc12 another name
ccc12 blah bla

результирующий файл C.txt

aaa1 some text
aaaa some info
aaaa4 some name
bbb some name to
ccc12 another name

Что я пытаюсь сделать

for /F %%i in (C:\filecopy\fileA.txt) do (
If exist (findstr /B /C:%%i fileC.txt) (
echo %%i exists ) else (
findstr /B /C:%%i fileB.txt >> fileC.txt )
)

Но этот код неверен, и я не уверен, как лучше с ним справиться.


person dragon_sa    schedule 29.04.2016    source источник


Ответы (1)


Решение состоит в том, чтобы сохранить в файле C.txt только первое совпадение результата findstr, когда каждое слово в файле A.txt ищется в файле B.txt (именно так, как вы указали в заголовке вопроса):

@echo off
setlocal

(for /F %%i in (fileA.txt) do (
   set "firstMatch=true"
   for /F "delims=" %%j in ('findstr /B /C:%%i fileB.txt') do (
      if defined firstMatch (
         echo %%j
         set "firstMatch="
      )
   )
)) > fileC.txt
person Aacini    schedule 29.04.2016