0

我有两个文件,其中包含一个目录中的文件列表:files.txt 和 filesb.txt
file1.txt 包含以下内容:

file1
file2
file3
file4
file5
file6
filelast

虽然 filesb.txt 包含:

file1
file2
file3
file4
file5
file7
filelast

据我了解,以下批处理代码:

FC C:\Users\[username]\Desktop\files.txt C:\Users\[username]\Desktop\files.txt

应该输出这个:

Comparing files C:\USERS\[username]\DESKTOP\files.txt and C:\USERS\[username]\DESKTOP\FILESB.TXT
***** C:\USERS\[username]\DESKTOP\files.txt
file6
***** C:\USERS\[username]\DESKTOP\FILESB.TXT
file7
*****

而是输出这个:

Comparing files C:\USERS\[username]\DESKTOP\files.txt and C:\USERS\[username]\DESKTOP\FILESB.TXT
***** C:\USERS\[username]\DESKTOP\files.txt
file5
file6
filelast
***** C:\USERS\[username]\DESKTOP\FILESB.TXT
file5
file7
filelast
*****

我该怎么做才能只输出不同的文件而不输出周围的文件?提前致谢!

4

2 回答 2

0

每组差异的第一行和最后一行有助于正确识别每组差异。如果只报告了不同的行,如果文件很大并且有很多差异,您可能无法识别该行。但是,您可以从 FC 命令获取输出并以您希望的任何方式对其进行处理,但这种解决方案并不简单,因为还可能插入新行、删除旧行或这些情况的任何组合。

前段时间我写了一个这样的程序,它不仅可以正确处理所有这些情况,而且还可以水平地对两个文件进行可视比较,每个文件使用一半的屏幕。例如:

C:\> type files.txt
file1
file2
file3
file4
file5
file6
filelast

C:\> type filesb.txt
file1
file2
file3
file4
file5
file7
filelast

C:\> FComp files.txt filesb.txt
Comparando archivos files.txt y FILESB.TXT

==============================  SECTION MODIFIED  =============================

file5                                  |file5
file6                                  |file7
filelast                               |filelast

C:\>

您可以从这个站点下载 FComp.bat 程序。您可以轻松地修改此程序,以抑制每个“修改部分”的第一行和最后一行的显示。

于 2014-11-07T00:13:14.810 回答
0

我建议

findstr /x /v /L /g:file1 file2

这应该输出 file2 中 file1 中不存在的任何行。

于 2014-11-07T02:14:36.453 回答