我在目录中有大约30个文件,从64KB到4MB不等,是BIN文件。我需要找到那里是否有重复文件...许多文件具有相同的大小。
我想找到那里是否有二进制相同的文件。
任何人都知道这样做的方法吗?我在Windows XP专业版下。
谢谢!
答案 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资源管理器中选择的各种文件哈希值:
答案 2 :(得分:1)
使用Md5Deep(或类似文件)对其进行哈希处理,或尝试使用重复的文件检查程序
答案 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循环