我一直在寻找一种创建bat文件的方法来生成文件的MD5校验和。
我尝试了fciv
和其他几个,但他们都生成了一个包含路径和文件名等附加信息的文件。我只需要MD5,没有别的。
有人指出我正确的方向吗?
此命令行
fciv new.xml -md5 -r -xml new.xml.md5
创建一个包含以下内容的文件:
<?xml version="1.0" encoding="utf-8"?>
<FCIV>
<FILE_ENTRY><name>new.xml</name><MD5>OuX4jSQyl91+M1fUQZeGtw==</MD5></FILE_ENTRY></FCIV>
我只需要MD5校验和。
答案 0 :(得分:2)
这是certutil的一个非常简化的包装器,没有任何arg /错误检查:
@Echo off
:: Pass the file to hash as the only arg
Set "MD5="
For /f "skip=1 Delims=" %%# in (
'certutil -hashfile "%~f1" MD5'
) Do If not defined MD5 Set MD5=%%#
Set MD5=%MD5: =%
Echo:%MD5%
输出散列此批次本身
b873bbcd93873a6aa320cd64a1751d8a
答案 1 :(得分:0)
使用您在问题中显示的FCIV工具,您似乎在XML中输出base64中的结果,而这不是您所要求的。
您仍然可以像这样使用它来获取名为new.xml的文件的MD5:
For /F "EOL=/" %A In ('FCIV new.xml') Do @Echo(%A
这假设MD5仍然是FCIV的默认输出,它从cmd.exe窗口运行,该窗口正确地知道/访问FCIV.exe的位置
[编辑/]
批处理文件格式的扩展示例。
@Echo Off
Set "MyFile=new.xml"
Set "MD5="
For /F "EOL=/" %%A In ('FCIV "%MyFile%"') Do Set "MD5=%%A"
If Defined MD5 Echo(%MD5%
Timeout -1
单词new.xml甚至可以用%~1替换,然后您可以将文件拖放到它上面以输出它的散列。