寻找快速文件比较

时间:2014-01-23 13:46:18

标签: windows batch-file command-line compare diff

我的任务是比较Windows中数百个文件的列表。在每次比较中,我都要比较一对文件。 文件可以是二进制文件或文本文件(各种)

我正在寻找最快的时间来运行它。我必须检查内容是否相同(我与内容本身无关 - 我必须报告==!=)。

最快的方法是什么? fc.exe?别的什么?

如果fc.exe是答案,是否有任何参数可以加快响应时间?

我更喜欢使用标准Windows安装的EXE(但不是必须的)。

谢谢你

3 个答案:

答案 0 :(得分:2)

我假设你想进行二元比较。

我会使用以下内容来比较两个文件:

fc "file1" "file2" /b >nul && echo "file1" == "file2" || "file1" != "file2"

修改

如果要比较许多非常大的文件,在使用FC比较整个文件之前比较文件大小可能是值得的。我使用了same指示符变量,这样我就可以定义一次只能执行“相同”或“不同”结果的操作,而不需要使用CALLed子例程。 CALL相对较慢。

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"
)

答案 1 :(得分:0)

您可以使用第三方命令行工具获取每个文件的CRC十六进制字符串,并比较十六进制字符串。

根据您比较文件集的方式,使用此方法时,每个文件只需要读取一次。

答案 2 :(得分:0)

@foxidrive答案很有用,特别是当文件很大且在同一物理驱动器上时,除非比较软件一次吞下大文件块会导致磁盘抖动,否则尤其如此。

有两个实用程序可用

内置(至少适用于Windows 10) C:\ Windows \ System32 \ certutil.exe 它的参数设置有点笨拙,但是效果很好,进行了许多有用的转换,并且可以使用大量的哈希算法(对不起,我失去了指向可用算法完整列表的链接);它绝对适用于sha1 sha256 sha384 md5。 例如certutil -hashfile“ E:\ huge.7z” md5

和Microsoft实用程序fciv(默认情况下为md5生成器) Google用于“ Microsoft文件校验和完整性验证程序”,并从Microsoft下载 例如fciv bigFile.7z

我知道这是一个古老的问题,但是我还没有看到这两个实用程序提及得太多……希望对您有所帮助。