windows批量比较md5sum与md5文件内容

时间:2013-10-28 10:49:23

标签: windows batch-file windows-server

我有一个包含几个zip文件的文件夹,名为1.zip,2.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=<%mypath%%%f.tmp似乎由于某种原因没有得到内容。

除此之外,md5sum输出小写的md5sum,后跟*-

我是批量新手,已经花了太多时间试图解决这个问题。

有人能给我一些关于我做错了什么的提示以及当我再次陷入困境时如何能够进行一些调试?

在我克服了这个之后,我将需要按空格分割tpm文件内容以将md5sum和大写分开。希望他们比较容易比较应该更容易。

谢谢。

1 个答案:

答案 0 :(得分:2)

@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