Cmd 验证文件的md5

Cmd 验证文件的md5,cmd,md5,Cmd,Md5,我想制作一个批处理文件,该文件: 将md5设置为变量“temp” 获取新文件的md5并将其设置为“newmd5” 将temp与newmd5进行比较 如果相等,则回显“ok”。否则会回显“错误文件” 这是我到目前为止写的: @ECHO OFF set temp=202cb962ac59075b964b07152d234b70 CertUtil -hashfile test123.txt MD5 PAUSE 结果是: test123.txt的MD5哈希: 202cb962ac59075b964b0

我想制作一个批处理文件,该文件:

  • 将md5设置为变量“temp”
  • 获取新文件的md5并将其设置为“newmd5”
  • 将temp与newmd5进行比较
  • 如果相等,则回显“ok”。否则会回显“错误文件”
  • 这是我到目前为止写的:

    @ECHO OFF
    set temp=202cb962ac59075b964b07152d234b70
    CertUtil -hashfile test123.txt MD5
    PAUSE
    
    结果是:

    test123.txt的MD5哈希: 202cb962ac59075b964b07152d234b70 CertUtil:-hashfile命令已成功完成。 按任意键继续。。
    我一直坚持在“newmd5”变量中设置输出md5,并将其与temp进行比较。

    ,因此您的问题可以简化为“如何将certutil给出的md5设置为变量?”

    这可以通过
    for/f
    循环完成:

    set "test="
    for /f "skip=1 delims=" %%a in ('certutil -hashfile test123.txt MD5') do if not defined test set "test=%%a"
    set "test=%test: =%"
    
    “skip=1”
    将跳过第一行(
    MD5有……
    ),
    如果未定义,则只考虑第二行(散列),忽略第三行(
    CertUtil:-hashfile命令已成功完成。


    我想您不需要使用
    if
    命令来比较这两个变量。

    谢谢,这在windows 10上非常有用。但在windows 7或xp中,md5用空格分隔,例如f9 8b ae 8f。。。。。在这种情况下,重新结果仅为“f9”,如何对此情况进行修复?