Bat文件只生成文件

时间:2016-12-16 14:09:12

标签: windows batch-file md5

我一直在寻找一种创建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校验和。

2 个答案:

答案 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替换,然后您可以将文件拖放到它上面以输出它的散列。