Я пытаюсь извлечь один файл с помощью сценария bash с 7zip из большого контейнера.

Команда: 7za e archive.zip singlefilename

Если пароль неверный, 7zip создаст пустой файл с именем singlefilename и скрипт продолжит работу, которая не предназначена.

Есть ли какой-либо переключатель для повторного запроса паролей, если они не так с 7za? Работает без проблем с распаковкой:/

2 ответа2

1

Код выхода

То же, что и ответ Акселя , но (поскольку вы упомянули bash), вот код bash, с которого можно начать:

#!/bin/bash
EXIT=1
while [ ! $EXIT -eq 0 ]
do
        # 7-zip stuff
        EXIT=$?
done

Когда большинство программ завершают работу без ошибок, они устанавливают код выхода равным 0 .

Тестирование на ненулевой код завершения часто является хорошим способом определить, когда программа каким-то образом потерпела неудачу.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .