检测同一目录中的重复二进制文件(Windows)

时间:2010-01-14 15:20:53

标签: windows file compare

我在目录中有大约30个文件,从64KB到4MB不等,是BIN文件。我需要找到那里是否有重复文件...许多文件具有相同的大小。

我想找到那里是否有二进制相同的文件。

任何人都知道这样做的方法吗?我在Windows XP专业版下。

谢谢!

6 个答案:

答案 0 :(得分:3)

这很简单。您可以在命令行上使用两个嵌套的for循环:

for %x in (*) do @(
    for %y in (*) do @(
        if not "%x"=="%y" @(
            fc /b "%x" "%y" >nul && echo "%x" and "%y" are equal
        )
    )
)

如果要在批处理文件中使用它,则需要将%符号加倍。

代码只是在当前目录中的所有文件上循环两次:

for %x in (*) do @(
    for %y in (*) do @(

然后,如果两个文件名不相等(因为那时我们知道文件相同)

        if not "%x"=="%y" @(

如果运行比较文件的fc实用程序

            fc "%x" "%y" >nul && echo "%x" and "%y" are equal

如果fc的退出代码为0,则意味着文件相同(因此重复),在这种情况下echo被触发后&&&&表示“如果前一个命令退出并带有0退出代码,则执行以下命令。”

对于30个文件,这肯定足够快。我曾经批量实施过更精细的东西,但这应该足够了。

ETA:找到另一批;仍然没有公开解释,但我曾posted it at Super User

答案 1 :(得分:1)

就个人而言,我会先按文件大小对文件进行排序。不同文件大小的文件在二进制比较中可能不同。

具有相同文件大小的那些可能是相同的,因此我将生成文件内容的哈希值(MD5,SHA1等)。那些具有相同散列结果的文件是相同的。

从编程的角度来看待所有“on-topic”(否则这个问题可能更适合superuser.com),这是一个实现“shell扩展”的C#项目(即Windows资源管理器上下文中的其他项目)菜单)将计算在Windows资源管理器中选择的各种文件哈希值:

File Hash Generator Shell Extension

答案 2 :(得分:1)

使用Md5Deep(或类似文件)对其进行哈希处理,或尝试使用重复的文件检查程序

http://www.portablefreeware.com/index.php?sc=77

答案 3 :(得分:0)

生成每个文件的哈希值(Md5或sha1)并进行比较。

显然,如果两个文件的大小不同,那么你可以立即打折。

答案 4 :(得分:0)

您没有指明如何发生这种情况。也许这是一个属于superuser.com的问题,但您可以使用像WinMerge这样的工具。

如果必须通过代码执行此操作,则可以计算文件的哈希值并比较此哈希值。

答案 5 :(得分:0)

您可以使用fc或fciv(用于校验和)

或者您可以下载GNU utilities

获取包含md5sum和coreutils的Textutils,其中包含sort / uniq。然后这样做

C:\files>md5sum * | sort | uniq -d -w 32
6f2b448730d23fe68876db87f1ddc143 *file.txt

要迭代并对结果执行某些操作,请使用for循环