Я пытаюсь заменить определенный файл .jar, если изменяется хэш файла MD5. Я написал небольшой скрипт PowerShell для хэширования файла, а скрипт .ps1 запускается через пакетный файл.Findstr всегда не находит хэш-строку в текстовом файле
После того, как PowerShell печатает хэш в 1.txt
Я хочу, чтобы командный скрипт проверял текстовый файл на правильный хэш, и если хеш отличается, он перезапишет файл старой версией. Замена файла еще не реализована, но будет после устранения проблемы findstr
.
@echo off
setlocal EnableDelayedExpansion
:a
powershell.exe -ExecutionPolicy ByPass -file powershellmd5.ps1
findstr /c:"ff b1 b9 2d b1 03 db 59 3f 9e ca 51 f0 14 67 62 ca a8 d7 7d" "1.txt"
echo !errorlevel!
timeout /t 10 /NOBREAK
goto a
Вот содержание 1.txt
когда хеширование завершено:
SHA1 hash of file license.jar: ff b1 b9 2d b1 03 db 59 3f 9e ca 51 f0 14 67 62 ca a8 d7 7d CertUtil: -hashfile command completed successfully.
Равен всегда 1, даже если строка идентична той, в текстовом файле. Может быть, я неправильно использую аргументы?
Я использую Out-File
в powershellmd5.ps1
написать результат:
certutil -hashfile license.txt | Out-File 1.txt
Он работает из командной строки, правильный синтаксис findstr и возвращает 0 для образца файла, который вы предоставили. Если путь был неправильным, вы увидите сообщение об ошибке. Попробуйте вставить 'pause' после вызова powershell, подождите несколько секунд, а затем посмотрите, работает ли findstr –
. Есть ли вероятность, что разделители чисел в файле« 1.txt »_not_ будут пробелами (Ascii 32 chars)? – Aacini
@Aacini Я посмотрю, что это может быть так. – xnstad