Исходя из предоставленного вами результата, единственная строка, которая вам нужна, не содержит символа :
. Вы легко сможете исключить строки, которые показывают этот символ, пропустив команду certutil
через find.exe
с параметром /V
.
@"%__AppDir__%certutil.exe" -HashFile "E:\Test\test.zip"|"%__AppDir__%find.exe" /V ":"
Чтобы установить его в переменную, вы можете добавьте эту команду к For /F
l oop:
@For /F Delims^= %%G In ('""%__AppDir__%certutil.exe" -HashFile "E:\Test\test.zip"|"%__AppDir__%find.exe" /V ":""')Do @Set "SHA1=%%G"
В качестве примечания, насколько я понимаю, CertUtil может, в зависимости от версии, выводить результат SHA1 в виде двадцати пар, разделенных пространства. Если вы развертываете свой пакетный файл в системах, которые используют такой вывод, вы все равно можете получить вывод из 40 символов, используя For /F
l oop:
@For /F "Tokens=1-20" %%G In ('""%__AppDir__%certutil.exe" -HashFile "E:\Test\test.zip"|"%__AppDir__%find.exe" /V ":""')Do @Set "SHA1=%%G%%H%%I%%J%%K%%L%%M%%N%%O%%P%%Q%%R%%S%%T%%U%%V%%W%%X%%Y%%Z"