Разница в выводе 2 текстовых файлов в 3-й текстовый файл

Я пытаюсь запустить файл bat, который сравнивает один файл с другим и выводит различия

Я пытался использовать утилиты gnu diff, fc и бесконечный Google, чтобы найти решение, но я не могу понять,

Файл 1

C:\Books\Tolkien, J.R.R. - The Adventures Of Tom Bombadil.pdf
C:\Books\test.rtf.epub
C:\Books\w_E_20130215.epub

Файл 2

C:\Books\test.rtf.epub
C:\Books\w_E_20130215.epub

Я хочу, чтобы файл 3 был

C:\Books\Tolkien, J.R.R. - The Adventures Of Tom Bombadil.pdf

У кого-нибудь есть идеи?

2 ответа

Решение

Вы могли бы использовать diff из DiffUtils и что-то вроде этого:

diff file1.txt file2.txt | findstr /r /c:"^<" /c:"^>" >file3.txt

Выходным строкам будет предшествовать < или же >В зависимости от того, в каком файле отсутствовала соответствующая строка. Если вы хотите удалить и эти индикаторы, используйте что-то вроде этого:

for /f "tokens=1*" %a in (
  'diff file1.txt file2.txt ^| findstr /r /c:"^<" /c:"^>"'
) do @echo %b >>file3.txt

+ Изменить %a а также %b в %%a а также %%b если вы хотите запустить это в командном файле.

FINDSTR /v /b /e /l /g:file2. file1. >file3.

должен выдать требуемые результаты - строки в файле1 отсутствуют в файле2.

/v говорит "не найден", /b /e вызывает точное совпадение, а не частичное совпадение /l буквальный.

Другие вопросы по тегам