Cmd 将2个txt文件的差异输出到第3个txt文件

Cmd 将2个txt文件的差异输出到第3个txt文件,cmd,diff,filecompare,Cmd,Diff,Filecompare,我正在尝试运行一个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_2

我正在尝试运行一个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

有人有什么想法吗?

您可以使用

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.
应生成所需的结果-文件2中缺少文件1中的行


/v
表示“未找到”,而
/b/e
强制精确匹配-行中没有部分匹配
/l
文字。

奇怪的是,这会产生C:\Books\w_e_20130215。是否仅对该行进行复制,或者另外?如果文件为1,则报告最后一行。不会以新行结束。您可以将e换行符添加到文件1。使用
echo(>>file1.
(确保有两个
>
字符)或尝试
键入file1 | FINDSTR/v/b/e/l/g:file2.>file3.
这实际上工作得很好。必须做一些调整(推送和路径)但是它工作起来很有魅力!谢谢!!它看起来确实在最后生成了一个空格。有什么办法阻止它这样做吗?我使用输出生成文件并创建类似“XYZ.ext”的文件编辑:NVM我将其更改为执行@echo%b>>file3.txt,并且它也可以执行,或者将重定向放在行的开头:
@>>file3.txt echo%b
。在这方面还有一些问题……当我尝试在以下两个文件上使用相同的命令进行区分时。它仍然表示文件中包含相同的数据存在差异它似乎一直在说一行中有行不在另一行中,反之亦然,versaI最终找到了它…这是排序顺序…我添加了
sort%rundir%\temp\DontConvertformed.txt>>%rundir%\temp\DontConvertformedsorted.txt排序%rundir%\temp\Musicconverttemp.txt>%rundir%\temp\musicconvertSortTemp.txt
,它正在工作G