我的任务是比较Windows中数百个文件的列表。在每个比较中,我必须比较一对文件。这些文件可以是二进制文件或文本文件(各种)
我正在寻找最快的运行时间。我必须检查内容是否相同(我与内容本身无关 - 我必须报告==
或!=
)。
最快的方法是什么?fc.exe
?其他?
如果fc.exe
是答案,是否有任何参数应加速响应时间?
我宁愿使用标准Windows安装的一部分的EXE(但不是必须的)。
谢谢
我假设您想进行二进制比较。
我将使用以下来比较两个文件:
fc "file1" "file2" /b >nul && echo "file1" == "file2" || "file1" != "file2"
编辑
如果您有许多非常大的文件可以比较,则在使用FC比较整个文件之前比较文件大小时可能值得。我使用了same
指示器变量,因此我可以仅一次就可以按照"相同"或"不同"的结果来定义动作,而无需求助于呼叫子例程。呼叫相对较慢。
set "same="
for %%A in ("file1") do for %%B in ("file2") do (
if %%~zA equ %%~zB fc %%A %%B /b >nul && set "same=1"
)
if defined same (
echo "file1" == "file2"
) else (
echo "file1" != "file2"
)
您可以使用第三方命令行工具获得每个文件的CRC六角字符串并比较十六进制字符串。
根据您比较文件集的方式,使用此方法时,每个文件只需要一次读取。
@foxidrive答案有价值,尤其是当文件大且在相同的物理驱动器上,除非比较软件slurps slurps big File块,否则该驱动器会导致磁盘thrashing。
。可用的两个Utils
内置(至少适用于Windows 10)C: Windows System32 certutil.exe这有一个有点尴尬(巨大的)参数集,但效果很好,可以进行更多有用的转换,并且可以使用大量的哈希算法(对不起,我丢失了指向可用算法的完整列表的链接);它肯定与SHA1 SHA256 SHA384 MD5一起使用。前任。certutil -hashfile;MD5
和Microsoft实用程序FCIV(默认情况下MD5生成器)Google for" Microsoft文件校验和完整性验证者"并从微软下载前任。fciv bigfile.7z
我知道这是一个古老的问题,但是我还没有看到这两个公用事业提到很多...希望它对某人有帮助。