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 нет во всех установках .

Другие вопросы по тегам