/ / windows batch porównaj md5sum z zawartością pliku md5 - okna, plik wsadowy, serwer Windows

Windows wsad porównać md5sum z zawartością pliku md5 - Windows, plik wsadowy, Windows-serwer

Mam folder z kilkoma plikami zip o nazwie 1.zip, 2.zip i tak dalej.

Folder zawiera również pliki md5 dla każdego zip, takie jak 1.zip.md5 ... n.zip.md5

Pliki md5 mają sumę md5 zapisaną wielkimi literami z nową linią na końcu

Próbuję napisać program wsadowy, który odczyta wszystkie pliki zip, obliczy ich sumę md5 i porówna je z plikiem w powiązanym pliku md5.

Dotarłem tak daleko.

@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

Mój problem polega na tym set /p sum=<%mypath%%%f.tmp z jakiegoś powodu nie wydaje treści.

Ponadto md5sum generuje małe litery md5sum, a następnie *-.

Jestem nowy w partii i spędziłem już zbyt wiele godzin próbując to zrozumieć.

Czy ktoś może dać mi kilka wskazówek dotyczących tego, co robię źle, i jak mogę zrobić kilka debugowania, gdy znowu utknę?

Po przejściu przez to będę musiał podzielić zawartość pliku tpm według spacji, aby oddzielić sumę md5 od wielkich liter. Nadzieję, że będzie im łatwo, porównanie powinno być jeszcze łatwiejsze.

Dziękuję Ci.

Odpowiedzi:

2 dla odpowiedzi № 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