2014-11-06 95 views
0

我有一個包含從目錄中的文件列表兩個文件:files.txt和filesb.txt
FILE1.TXT包含以下內容:批處理文件比較(FC)輸出不工作

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 
***** 

我能做些什麼,只輸出不同的文件,而不是周圍的人呢?提前致謝!

+0

嘗試使用'/ b'選項查看十六進制格式的差異。可能會有其他空格或製表符。 – npocmaka 2014-11-06 22:57:12

回答

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:\> 

您可以從this site下載FComp.bat程序。您可以輕鬆修改此程序,以便禁止顯示每個「修改部分」的第一行和最後一行。

0

我建議

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

這應該輸出file2中的任何行中不存在的file1。