【问题标题】:windows batch compare md5sum with md5 file contentswindows批量比较md5sum和md5文件内容
【发布时间】:2013-11-07 02:31:44
【问题描述】:

我有一个文件夹,其中包含几个名为 1.zip、2.zip 等的 zip 文件。

该文件夹还包含每个 zip 的 md5 文件,例如 1.zip.md5 ... n.zip.md5

md5 文件的 md5sum 为大写,末尾有一个新行

我正在尝试编写一个批处理程序,它将读取所有 zip 文件,计算它们的 md5sum 并将其与相关 md5 文件中的比较。

我已经走到这一步了。

@echo off
set mypath=G:\Temp\

for %%f in (*.zip) do (
  echo PROCESSING: %mypath%%%f
  md5sum < %mypath%%%f > %mypath%%%f.tmp
  set /p sum=<%mypath%%%f.tmp
  echo SUM: %sum%
  :rm %mypath%%%f.tmp
  pause
)
pause

我的问题是set /p sum=&lt;%mypath%%%f.tmp 似乎由于某种原因没有得到内容。

在 md5sum 之上输出小写 md5sum,然后是 *-

我是一批新手,已经花了太多时间试图弄清楚这一点。

谁能给我一些提示,告诉我我做错了什么以及当我再次卡住时如何进行调试?

在我解决这个问题后,我需要将 tpm 文件内容按空格分开,以将 md5sum 和大写分开。希望这会很容易,他们比较应该更容易。

谢谢。

【问题讨论】:

    标签: windows batch-file windows-server


    【解决方案1】:
    @echo off
    set mypath=.
    rem cd /d "%mypath%"
    setlocal enableDelayedExpansion
    for %%f in (*.zip) do (
      echo PROCESSING: %%~dpfnxf
      for /f "tokens=1 delims=*- " %%S in ('md5sum ^< "%%~dpfnxf" ') do set "sum=%%S" 
      echo SUM: !sum!
      :rm %mypath%%%f.tmp
      pause
    )
    endlocal
    pause
    

    【讨论】:

    • md5sum &lt; "%mypath%%%f 随机选取的 zip 文件的输出是什么?
    • 9930a67db849bbbf483d72a3fc92d88a *-
    • 你在脚本中输入了mypath=G:\Temp` because there's no cd`还是pushd..?(现在我正在自己测试脚本)
    • 就是文件所在的路径。脚本是我发布的。里面没有其他东西。服务器是 Windows Azure 2012。
    • 我认为 set /p 在 win 2012 中的工作方式发生了变化。例如打印没有新行的字符串不再起作用:echo|set /=print this on same line
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-15
    • 2011-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多