2017-04-17 59 views
0

我正在使用FC filename1 filename2 >> myLog.txt(其中myLog.txt存在)命令在Windows下比較兩個文件。我在循環中使用該命令,以便可以比較多對文件。Windows fc忽略輸出時無差別

我想忽略輸出時FC輸出:

Comparing files filename and filename2 
FC: no differences encountered 

由於洪水與無用信息的輸出文件。

我該怎麼做? 如果可能的話,我可以統計「成功」(我忽略的那個輸出)的數量嗎?

我試圖用FC filename1 filename2 2> myLog.txt重定向錯誤流,但它不輸出任何東西,這意味着命令只輸出到標準流。

+0

也許你可以寫'FC'輸出到一個臨時文件。在決定保留它之後,可以將臨時文件附加到myLog.txt文件中。這也是增加計數的地方。 – lit

+0

'fc'在差異的情況下設置'ErrorLevel',否則清除它,所以你可以利用它... – aschipfl

回答

2

您還沒有指定您如何「在循環中使用命令,這樣我就可以比較很多對文件」(你怎麼得到文件中的循環每對?),因此必須修改代碼如下。

@echo off 
setlocal 

set successfull=0 
(for %%a in (filename1*.txt) do (
    FC "%%a" "%%~Na2.txt" > diffs.tmp 
    if errorlevel 1 (
     type diffs.tmp 
    ) else (
     set /A successfull+=1 
    ) 
)) > C:\other\folder\myLog.txt 
del diffs.tmp 

echo Successfull compares: %successfull% 

如果myLog.txt文件必須以每次運行這個程序的增長,那麼就改變>重定向由>>添加一個...

+0

因此,而不是我的嘗試「FC文件名1文件名2 2> myLog.txt」(其中我重定向錯誤流)我只需要檢查errorlevel標誌是否升至1? –

1

很容易通過管道FC的輸出做FIND/V或FINDSTR/V。查看這些命令的幫助。如果您還有其他問題,請發佈您的代碼。

+0

當沒有差異時,如何使用'FIND/V'或'FINDSTR/V'來消除來自'FC filename1 filename2'輸出的第一行(「比較files filename和filename2」)? – Aacini

+0

FC filename1 filename2 | FIND/I/V「沒有遇到任何差異」 – RGuggisberg

+0

我建議你_謹記讀取OP請求和我的評論!你的「解決方案」不會消除FC命令輸出的第一行,這裏的例子是「比較文件的文件名和文件名2」! – Aacini