我想编写一个批处理脚本,能够生成并验证整个目录树的 md5 哈希值。Windows 上有没有类似的程序?
我可以找到许多 md5 程序,但它们无法验证或重复。
答案1
因此,如果您熟悉命令行,您可以尝试以下几个工具:
文件列表
原始 URL 不再有效,因此上述内容使用了 wayback machine。如果您单击将您带到下载站点的链接,它也会使用 wayback machine,因此这里有一个似乎仍然有效的直接链接:https://www.jam-software.com/filelist/
filelist /?
FileList V2.0
Prints a list of all files in a file system branch
FILELIST [/OPTION] [/FILTER pattern1;pattern2;...] Path [>list.csv]
/OWNERS Adds a coluimn with the file owners (slower)
/NOHEADER Leaves out the column headers and only prints the raw data
/ATTRIBUTES Includes the attributes that are set for each files
/MD5 Adds a column wit the MD5 checksum of each file
/AUTHORS Additionally extracts name of the author from MS Office documents
/LASTSAVEDATE Additionally extracts the last save date from MS Office documents
/FILTER Allows to specify one or more filters, separated with semicolons
For example: filelist /md5 C:\temp > list.csv
Add new files then run again filelist /md5 C:\temp > list2.csv
或者md5deep从http://md5deep.sourceforge.net/start-md5deep.html
md5deep.exe -r C:\temp >> md5hashes1.txt modify files and run again
md5deep.exe -r C:\temp >> md5hashes2.txt
现在只需在 excel 或任何 diff 实用程序(例如 Windifff)中将 list.csv 与 list2.csv 进行比较
否则选择:
MD5夏季从http://www.md5summer.org/
或者
答案2
为什么要重新发明轮子?既然你明确表示你正在寻找一款 Windows 应用,我建议HashCheck Shell 扩展
它可以完成您要求的所有任务,并且占用的资源非常少。
答案3
抱歉,我认为您无法做到这一点。md5 哈希是字节流的哈希,但目录树不是字节流。文件夹是文件(字节流)和其他文件夹的索引。现在从技术上讲,文件夹本身就是文件,但所有文件都没有“预定义”的顺序,所以我认为这是不可能的。
因此,我认为您首先需要将目录编码为单个字节流(即文件)。命令行版本的 zip 或 winRar 将完成此操作。如果速度是一个问题,可以选择不进行任何实际压缩。可能还有一个 Windows 版本的 tar,或者甚至可能是 Windows 原生版本(.cab 文件?)。我可能会选择 7zip 并使用命令行7z.exe
(包含在安装程序中)
因此,您的脚本可以创建单个文件,然后获取该文件的 MD5 哈希值。然后您的脚本可以删除单个文件。这不是您想要的,但我认为这是您的最佳选择。