本文目录导读:

方案1:使用Python脚本(推荐,功能最强大)
#!/usr/bin/env python3
"""
批量解压加密压缩包脚本
支持:ZIP、RAR、7z格式
"""
import os
import zipfile
import subprocess
import argparse
from pathlib import Path
class BatchExtractor:
def __init__(self, password, input_dir=".", output_dir="extracted"):
self.password = password.encode() if password else None
self.input_dir = Path(input_dir)
self.output_dir = Path(output_dir)
self.success_count = 0
self.fail_count = 0
def extract_zip(self, zip_path):
"""解压ZIP文件"""
try:
with zipfile.ZipFile(zip_path, 'r') as zf:
# 创建输出目录
extract_path = self.output_dir / zip_path.stem
extract_path.mkdir(parents=True, exist_ok=True)
# 尝试使用密码解压
zf.extractall(path=extract_path, pwd=self.password)
print(f"✅ 成功解压: {zip_path.name}")
self.success_count += 1
return True
except Exception as e:
print(f"❌ 解压失败: {zip_path.name} - {str(e)}")
self.fail_count += 1
return False
def extract_rar(self, rar_path):
"""解压RAR文件(需要安装unrar)"""
try:
extract_path = self.output_dir / rar_path.stem
extract_path.mkdir(parents=True, exist_ok=True)
cmd = ['unrar', 'x']
if self.password:
cmd.extend(['-p' + self.password.decode()])
cmd.extend([str(rar_path), str(extract_path) + '/'])
result = subprocess.run(cmd, capture_output=True, text=True)
if result.returncode == 0:
print(f"✅ 成功解压: {rar_path.name}")
self.success_count += 1
else:
print(f"❌ 解压失败: {rar_path.name}")
self.fail_count += 1
except Exception as e:
print(f"❌ 解压失败: {rar_path.name} - {str(e)}")
self.fail_count += 1
def extract_7z(self, seven_z_path):
"""解压7z文件(需要安装7z)"""
try:
extract_path = self.output_dir / seven_z_path.stem
extract_path.mkdir(parents=True, exist_ok=True)
cmd = ['7z', 'x']
if self.password:
cmd.extend(['-p' + self.password.decode()])
cmd.extend(['-o' + str(extract_path), str(seven_z_path)])
result = subprocess.run(cmd, capture_output=True, text=True)
if result.returncode == 0:
print(f"✅ 成功解压: {seven_z_path.name}")
self.success_count += 1
else:
print(f"❌ 解压失败: {seven_z_path.name}")
self.fail_count += 1
except Exception as e:
print(f"❌ 解压失败: {seven_z_path.name} - {str(e)}")
self.fail_count += 1
def run(self):
"""执行批量解压"""
# 查找所有压缩文件
extensions = ['.zip', '.rar', '.7z', '.tar.gz', '.tar']
files_to_extract = []
for ext in extensions:
files_to_extract.extend(self.input_dir.glob(f'*{ext}'))
if not files_to_extract:
print(f"在 {self.input_dir} 目录下没有找到压缩文件")
return
print(f"找到 {len(files_to_extract)} 个压缩文件")
print(f"开始批量解压...\n")
# 创建输出目录
self.output_dir.mkdir(parents=True, exist_ok=True)
# 遍历并解压
for file_path in files_to_extract:
suffix = file_path.suffix.lower()
if suffix == '.zip':
self.extract_zip(file_path)
elif suffix == '.rar':
self.extract_rar(file_path)
elif suffix in ['.7z', '.tar.gz', '.tar']:
self.extract_7z(file_path)
# 打印统计信息
print(f"\n📊 解压完成统计:")
print(f"✅ 成功: {self.success_count}")
print(f"❌ 失败: {self.fail_count}")
print(f"📁 输出目录: {self.output_dir}")
def main():
parser = argparse.ArgumentParser(description='批量解压加密压缩包')
parser.add_argument('-p', '--password', required=True, help='解压密码')
parser.add_argument('-i', '--input', default='.', help='输入目录(默认当前目录)')
parser.add_argument('-o', '--output', default='extracted', help='输出目录(默认extracted)')
args = parser.parse_args()
extractor = BatchExtractor(
password=args.password,
input_dir=args.input,
output_dir=args.output
)
extractor.run()
if __name__ == '__main__':
main()
方案2:简易的Bash脚本(Linux/macOS)
#!/bin/bash
# 批量解压加密压缩包脚本
# 配置
PASSWORD="your_password_here"
INPUT_DIR="."
OUTPUT_DIR="extracted"
# 创建输出目录
mkdir -p "$OUTPUT_DIR"
echo "🔍 扫描压缩文件..."
success=0
failed=0
# 解压所有ZIP文件
for file in "$INPUT_DIR"/*.zip; do
if [ -f "$file" ]; then
filename=$(basename "$file" .zip)
echo "📦 正在解压: $filename"
if 7z x "$file" -p"$PASSWORD" -o"$OUTPUT_DIR/$filename" -y > /dev/null 2>&1; then
echo "✅ 成功: $filename"
((success++))
else
echo "❌ 失败: $filename"
((failed++))
fi
fi
done
# 解压所有RAR文件(需要安装unrar)
for file in "$INPUT_DIR"/*.rar; do
if [ -f "$file" ]; then
filename=$(basename "$file" .rar)
echo "📦 正在解压: $filename"
mkdir -p "$OUTPUT_DIR/$filename"
if unrar x -p"$PASSWORD" "$file" "$OUTPUT_DIR/$filename/" > /dev/null 2>&1; then
echo "✅ 成功: $filename"
((success++))
else
echo "❌ 失败: $filename"
((failed++))
fi
fi
done
# 打印统计
echo ""
echo "📊 统计结果:"
echo "✅ 成功: $success"
echo "❌ 失败: $failed"
echo "📁 输出目录: $OUTPUT_DIR"
方案3:Windows批处理脚本
@echo off
chcp 65001 >nul
REM 批量解压加密压缩包(Windows)
REM 需要安装 7-Zip
set PASSWORD=your_password_here
set INPUT_DIR=.
set OUTPUT_DIR=extracted
echo 批量解压加密压缩包...
echo 密码: %PASSWORD%
echo.
mkdir "%OUTPUT_DIR%" 2>nul
set success=0
set failed=0
REM 解压所有ZIP文件
for %%f in ("%INPUT_DIR%\*.zip") do (
echo 正在解压: %%~nf
"C:\Program Files\7-Zip\7z.exe" x "%%f" -p%PASSWORD% -o"%OUTPUT_DIR%\%%~nf" -y >nul 2>&1
if !errorlevel! equ 0 (
echo ✅ 成功: %%~nf
set /a success+=1
) else (
echo ❌ 失败: %%~nf
set /a failed+=1
)
)
echo.
echo 📊 统计结果:
echo ✅ 成功: %success%
echo ❌ 失败: %failed%
echo 📁 输出目录: %OUTPUT_DIR%
pause
方案4:递增密码字典脚本
#!/usr/bin/env python3
"""
使用密码字典尝试解压加密包
"""
import os
import zipfile
import argparse
from pathlib import Path
def try_passwords(zip_path, password_file, output_dir="extracted"):
"""尝试多个密码"""
zip_path = Path(zip_path)
with open(password_file, 'r', encoding='utf-8') as f:
passwords = [line.strip() for line in f if line.strip()]
print(f"尝试 {len(passwords)} 个密码...")
for password in passwords:
try:
with zipfile.ZipFile(zip_path, 'r') as zf:
extract_path = Path(output_dir) / zip_path.stem
extract_path.mkdir(parents=True, exist_ok=True)
zf.extractall(path=extract_path, pwd=password.encode())
print(f"✅ 成功!密码: {password}")
return True
except:
continue
print(f"❌ 未找到正确密码")
return False
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='使用密码字典批量解压')
parser.add_argument('-i', '--input', required=True, help='压缩文件或目录')
parser.add_argument('-p', '--passwords', required=True, help='密码字典文件')
parser.add_argument('-o', '--output', default='extracted', help='输出目录')
args = parser.parse_args()
input_path = Path(args.input)
if input_path.is_file():
try_passwords(input_path, args.passwords, args.output)
else:
for ext in ['*.zip', '*.rar', '*.7z']:
for zip_file in input_path.glob(ext):
print(f"\n尝试: {zip_file.name}")
try_passwords(zip_file, args.passwords, args.output)
使用方法
Python脚本:
# 安装依赖 pip install pyunpack patool # 基本使用 python batch_extract.py -p "your_password" # 指定目录 python batch_extract.py -p "your_password" -i "./压缩包" -o "./解压文件" # 使用密码字典 python batch_extract_dict.py -i "./压缩包" -p "passwords.txt" -o "./解压文件"
Bash脚本:
# 赋予执行权限 chmod +x batch_extract.sh # 修改密码后运行 ./batch_extract.sh
Windows批处理:
- 修改
PASSWORD变量 - 确保安装了7-Zip
- 双击运行或使用命令提示符执行
注意事项
-
安装必要工具:
- ZIP:Python自带支持
- RAR:需要安装
unrar或winrar - 7z:需要安装
p7zip或7-Zip
-
密码安全:不要在公开脚本中硬编码密码
-
文件名编码:处理中文文件名时注意编码问题
-
大文件处理:对于大文件,考虑使用流式解压
选择适合您需求的方案,如果需要其他功能(如进度条、错误重试等),可以告诉我!
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播