我的任务是比较Windows中数百个文件的列表。在每次比较中,我都要比较一对文件。 文件可以是二进制文件或文本文件(各种)
我正在寻找最快的时间来运行它。我必须检查内容是否相同(我与内容本身无关 - 我必须报告==
或!=
)。
最快的方法是什么? fc.exe
?别的什么?
如果fc.exe
是答案,是否有任何参数可以加快响应时间?
我更喜欢使用标准Windows安装的EXE(但不是必须的)。
谢谢你
答案 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
我知道这是一个古老的问题,但是我还没有看到这两个实用程序提及得太多……希望对您有所帮助。