【问题标题】:Batch File Compare (FC) Output Not Working批处理文件比较 (FC) 输出不工作
【发布时间】:2014-11-06 22:44:58
【问题描述】:

我有两个文件,其中包含一个目录中的文件列表: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
*****

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

【问题讨论】:

  • 尝试使用/b 选项来查看十六进制格式的差异。可能会有额外的空格或制表符。

标签: batch-file cmd file-comparison


【解决方案1】:

每组差异的第一行和最后一行有助于正确识别每组。如果只报告了不同的行,如果文件很大并且有很多差异,则可能难以识别行。但是,您可以从 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:\>

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

【讨论】:

    【解决方案2】:

    我建议

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-13
      • 2013-02-03
      • 1970-01-01
      • 2014-08-19
      • 1970-01-01
      相关资源
      最近更新 更多