我正在尝试使用 7zip 通过 bash 脚本从一个大容器中提取单个文件。
命令:7za e archive.zip singlefilename
如果密码错误,7zip 会创建一个名为的空文件singlefilename
,并且脚本会继续执行,但这并不是预期的。
如果 7za 密码错误,是否有任何开关可以重新询问密码?与 unzip 配合使用很顺畅 :/
答案1
退出代码
与...一样阿克塞尔的答案,但是(因为您提到了 bash)这里有一些 bash 代码可以帮助您入门:
#!/bin/bash
EXIT=1
while [ ! $EXIT -eq 0 ]
do
# 7-zip stuff
EXIT=$?
done
当大多数程序无任何错误完成时,它们将退出代码设置为0
。
测试非零退出代码通常是检测程序何时以某种方式失败的好方法。
答案2
每当你输入错误的密码时,都会向调用 shell7z
返回一个非零值。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
不存在在所有安装中。