7za: если пароль введен неверно
Я пытаюсь извлечь один файл с помощью сценария bash с 7zip из большого контейнера.
Команда: 7za e archive.zip singlefilename
Если пароль неверный, 7zip создает пустой файл с именем singlefilename
и сценарий продолжается, что не предназначено.
Есть ли какой-либо переключатель для повторного запроса паролей, если они не так с 7za? Работает без проблем с распаковкой:/
2 ответа
Код выхода
То же самое, что и ответ Axel Kemper , но (поскольку вы упомянули bash), вот код bash, с которого можно начать:
#!/bin/bash
EXIT=1
while [ ! $EXIT -eq 0 ]
do
# 7-zip stuff
EXIT=$?
done
Когда большинство программ завершают работу без ошибок, они устанавливают код выхода на 0
,
Тестирование на ненулевой код завершения часто является хорошим способом обнаружить, когда программа каким-то образом потерпела неудачу.
Всякий раз, когда вы вводите неправильный пароль, 7z
вернет ненулевой ERRORLEVEL
к вызывающей оболочке.
Это может быть использовано для запуска повторной попытки следующим образом в .cmd
сценарий:
:again
:: -y allows overwrite of existing file
7z.exe e -y xxx.zip "xxx.txt"
if errorlevel 1 goto try_again
echo. got it!
goto xit
:try_again
echo. sorry! Try again ...
goto again
:xit
Замечания:
Автономная версия 7za
нет во всех установках .