英文:
Skip wrong password for 7z extraction Ubuntu
问题
Sure, here's the translated content:
任务是从存储在“IN”目录中的多个受密码保护的存档中提取文件,使用7zip包,密码存储在名为“PASS”的列表中。我遇到了一个问题:当密码错误时,7zip会创建空文件夹和文件。是否有方法可以跳过错误的密码并继续下一次迭代?
这是我的bash脚本:
FILES=./IN/*
PASS=('1' '2' '3')
for f in $FILES
do
for psd in "${PASS[@]}"
do
if 7z x -y -p"$psd" -o./OUT $f | grep 'ERROR'; then
break
fi
done
done
请注意,我已经修复了脚本中的引号问题,并将${PASS[@]}
括在双引号中以正确地处理密码列表。
英文:
The task is to extract files from multiple password-protected archives stored in “IN” directory with 7zip package, passwords stored in list “PASS”. I have a problem: when the password is wrong 7zip creates empty folders and files. Are there any ways to skip wrong password and go to next iteration?
Here’s my bash script
FILES=./IN/*
PASS=(‘1’ ‘2’ ‘3’)
for f in $FILES
do
for psd in $(PASS[@])
do
if 7z x -y -p”$psd” -o./OUT $f | grep ‘ERROR’; then
break
fi
done
done
答案1
得分: 0
以下是已翻译的内容:
这里有一个建议:在尝试提取之前,使用 7zz t
(测试归档完整性)来确定您列表中的给定密码是否有效。
示例:
#! /bin/sh
WORKDIR='path/to/your/work/dir'
PW='1 2 3'
for File in "$WORKDIR"/*.zip
do
test -r "$File" || continue
for Password in $PW
do
7zz t -p"$Password" "$File" >/dev/null 2>&1 \
&& { 7zz x -p"$Password" "$File"; break; }
done || echo "warning: could not extract file \"$File\" (no valid password found)"
done
备注:
- 如果您已安装了“7zip”软件包,则归档命令名称为
7zz
。 - 如果您已安装了“p7zip-full”软件包(7-Zip的Unix CLI端口),则归档命令名称为
7z
。
在Linux Debian 11上进行了测试。
希望这有所帮助。
英文:
Here's a suggestion : use 7zz t
(test archive integrity) to determine if a given password in your list is valid before attempting extraction.
Example:
#! /bin/sh
WORKDIR='path/to/your/work/dir'
PW='1 2 3'
for File in "$WORKDIR"/*.zip
do test -r "$File" || continue
for Password in $PW
do 7zz t -p"$Password" "$File" >/dev/null 2>&1 \
&& { 7zz x -p"$Password" "$File"; break; }
done || echo "warning: could not extract file \"$File\" (no valid password found)"
done
Note:
-
if you've installed package "7zip", the archiver command name is
7zz
. -
if you've installed package "p7zip-full" (the Unix CLI port of 7-Zip), the archiver command name is
7z
.
Tested on Linux Debian 11.
Hope that helps.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论