使用7-Zip进行批量压缩并排除特定后缀的文件,可以通过命令行或批处理脚本实现,以下是两种常用方法:

使用-x!参数排除特定后缀
@echo off
setlocal enabledelayedexpansion
REM 设置压缩包密码(可选)
set "PASSWORD="
REM 设置压缩级别(0=存储,5=标准,9=极限)
set "LEVEL=5"
REM 设置排除的后缀名(用逗号分隔)
set "EXCLUDE=*.tmp,*.log,*.bak"
for /r %%i in (*) do (
if not "%%~xi"=="" (
set "EXT=%%~xi"
set "EXCLUDE_FLAG="
REM 检查当前文件后缀是否在排除列表中
for %%e in (%EXCLUDE%) do (
if /i "%%~xi"=="%%e" set "EXCLUDE_FLAG=1"
)
if not defined EXCLUDE_FLAG (
REM 构建压缩命令
set "COMMAND=7z a -tzip "%%~dpni.zip" "%%i" -mx!LEVEL!"
if defined PASSWORD set "COMMAND=!COMMAND! -p!PASSWORD! -mem=AES256"
!COMMAND!
)
)
)
使用-i!参数包含特定文件(反向排除)
@echo off
setlocal enabledelayedexpansion
REM 设置要包含的文件类型(保留的文件后缀)
set "INCLUDE=*.txt,*.doc,*.xls"
for /r %%i in (%INCLUDE%) do (
set "COMMAND=7z a -tzip "%%~dpni.zip" "%%i" -mx5"
!COMMAND!
)
一次性压缩整个文件夹并排除文件
@echo off REM 压缩当前目录下所有文件,排除指定后缀 7z a -tzip output.zip * -x!*.tmp -x!*.log -x!*.bak -mx5
高级用法:多文件夹批量压缩
@echo off
setlocal enabledelayedexpansion
REM 排除的后缀列表(用空格分隔)
set "EXCLUDE=.tmp .log .bak .zip .rar"
for /d %%d in (*) do (
echo 正在压缩文件夹: %%d
set "EXCLUDE_PARAMS="
for %%e in (%EXCLUDE%) do (
set "EXCLUDE_PARAMS=!EXCLUDE_PARAMS! -x!*.%%e"
)
7z a -tzip "%%d.zip" "%%d\*" !EXCLUDE_PARAMS! -mx5 -r
)
使用说明:
- 安装7-Zip并确保
7z.exe在系统PATH中 - 将上述代码保存为
.bat文件(如batch_compress.bat) - 在要压缩的文件夹中运行该批处理文件
- 根据需要修改
EXCLUDE变量中的排除列表
常用参数说明:
-tzip:指定压缩格式为ZIP-mx5:设置压缩级别(0-9)-pPASSWORD:设置密码-r:递归处理子目录-x!*.ext:排除指定扩展名的文件-i!*.ext:只包含指定扩展名的文件
如果不需要密码保护,移除-p参数即可。
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。