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