You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu下7z批量解压时跳过错误密码的实现方法咨询

解决7zip密码错误时生成空文件/文件夹并跳过错误密码的问题

你的脚本存在语法错误和逻辑问题,导致密码错误时会生成空文件/文件夹,且错误退出内层循环。以下是修正后的方案:

核心修改思路

  1. 先验证密码正确性再解压:用7zip的t命令测试密码,该命令仅验证密码和压缩包完整性,不会生成任何文件
  2. 修正数组遍历语法,避免文件名含空格时出错
  3. 新增空文件/文件夹清理逻辑,确保目录干净
  4. 调整循环逻辑:密码正确则解压并跳至下一个压缩包,错误则继续尝试下一个密码

修正后的脚本

FILES=./IN/*
PASS=('1' '2' '3')

# 清理空文件和空文件夹的函数
clean_empty() {
  # 删除OUT目录下的空文件
  find ./OUT -type f -empty -delete
  # 从内到外删除空文件夹
  find ./OUT -type d -empty -delete
}

for f in $FILES
do
  # 处理当前压缩包前先清理残留的空文件
  clean_empty
  for psd in "${PASS[@]}"
  do
    # 静默测试密码是否正确
    if 7z t -p"$psd" "$f" > /dev/null 2>&1; then
      # 密码正确,执行解压
      7z x -y -p"$psd" -o./OUT "$f"
      # 解压完成,跳出密码循环,处理下一个压缩包
      break
    else
      # 密码错误,清理可能生成的临时空文件,继续尝试下一个密码
      clean_empty
      continue
    fi
  done
done

关键细节说明

  • 7z t -p"$psd" "$f" > /dev/null 2>&1:静默执行密码验证,成功返回0,失败返回非0,避免输出干扰
  • "${PASS[@]}":正确遍历数组,双引号处理含空格的密码(如果有)
  • 清理函数:即使解压过程中意外生成空文件/文件夹,也能自动清除,保证OUT目录整洁

内容的提问来源于stack exchange,提问作者Ilya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 12:13:14