2017-04-17 61 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