/ / windowsバッチでmd5sumとmd5ファイルの内容を比較 - windows、batch-file、windows-server

Windowsバッチmd5sumとmd5ファイルの内容を比較する - windows、batch-file、windows-server

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=<%mypath%%%f.tmp なんらかの理由で中身が出ないようです。

その上にmd5sumは小文字のmd5sumを出力し、その後に *-.

私はバッチで新しくて、すでにこれを理解しようとするのにあまりにも多くの時間を費やしました。

誰かが私が何をしているのか、そして再び動けなくなったときにデバッグができるようになるためのヒントを教えてくれる?

これを乗り越えた後、md5sumと大文字を区別するためにtpmファイルの内容をスペースで分割する必要があります。彼らが比較するのが簡単になることを願ってさらに簡単になるはずです。

ありがとうございました。

回答:

回答№1は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