0

我正在尝试运行一个 bat 文件,它将一个文件与另一个文件进行比较并输出差异

我尝试使用 gnu diff utilites、fc 和无休止的谷歌搜索来寻找解决方案,但我似乎无法弄清楚

文件 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

有人有想法么?

4

2 回答 2

1

您可以使用DiffUtilsdiff和类似的东西:

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

输出行前面将带有<or >,具体取决于相应行在哪个文件中丢失。如果您还想删除这些指示符,请使用以下内容:

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

如果您想在批处理文件中运行它,请更改并%a进入%b%%a%%b

于 2013-05-22T20:40:45.227 回答
0
FINDSTR /v /b /e /l /g:file2. file1. >file3.

应该产生所需的结果 - file2 中缺少 file1 中的行。

/v说“未找到”,/b /e强制完全匹配 - 不是部分行匹配/l文字。

于 2013-05-23T07:19:05.080 回答