需掌握7z.exe语法、参数及脚本逻辑:一、用a命令压缩,-t指定格式,-mx设等级,-x排除文件;二、-p加密码,-mhe=on加密文件名;三、批处理用%date%动态命名,加errorlevel检查;四、for循环多目录压缩,-v分卷;五、-bso0静默,>重定向日志。

如果您希望在Windows系统中通过命令行方式使用7-Zip执行压缩任务,或构建可复用的批处理脚本完成自动化归档操作,则需掌握7z.exe的基本语法结构、常用参数含义及脚本组织逻辑。以下是实现该目标的具体方法:
一、基础压缩命令语法与参数说明
7z.exe是7-Zip提供的核心命令行程序,所有操作均围绕其展开;压缩动作依赖于a(add)命令,配合档案格式、压缩等级、输出路径等参数组合生效。默认行为不递归子目录,需显式指定开关。
1、打开命令提示符(CMD)或PowerShell,确保7z.exe所在路径已加入系统环境变量PATH,或直接进入7z.exe所在目录执行命令。
2、执行基础压缩:输入7z a -tzip archive.zip folder\,其中-tzip指定ZIP格式,archive.zip为输出文件名,folder\为待压缩的源目录(末尾反斜杠表示包含全部子项)。
3、启用高压缩率:添加-mx=9参数,例如7z a -t7z archive.7z data\ -mx=9,此时使用7z格式并启用最高LZMA2压缩等级。
4、排除特定文件类型:使用-x!*.tmp跳过临时文件,完整命令如7z a backup.7z C:\Project\ -x!*.log -x!*.obj。
二、带密码保护的加密压缩
7-Zip支持AES-256算法对档案内容及文件名进行强加密,密码通过-p参数传入;若需隐藏文件名,必须使用7z格式而非ZIP,因ZIP仅支持内容加密。
1、执行带密码压缩:输入7z a -t7z -pMyPass123 -mhe=on secure.7z documents\,其中-mhe=on启用文件名加密,-p后紧跟密码(无空格)。
2、避免密码明文暴露:改用交互式输入,运行7z a -t7z -mhe=on secure.7z documents\后,程序将暂停并提示输入密码,此时键入密码不会回显。
3、指定加密算法强度:添加-mhe=on -mem=AES256确保使用AES-256而非默认AES-128,适用于高安全要求场景。
三、编写可复用的批处理压缩脚本
批处理脚本(.bat)能封装多步7z命令,支持变量替换、路径拼接与错误判断,适合定时归档、版本打包等重复性任务。脚本中应避免硬编码路径,优先使用%~dp0获取自身所在目录。
1、创建test_compress.bat文件,写入以下内容:@echo off setlocal set ARCHIVE_NAME=backup_%date:~0,4%%date:~5,2%%date:~8,2%.7z set SOURCE_DIR=C:\Data 7z a -t7z "%ARCHIVE_NAME%" "%SOURCE_DIR%" -mx=7 -r。
2、保存后双击运行,脚本将生成形如backup_20240520.7z的日期命名归档包,并递归压缩C:\Data下全部内容。
3、增加执行反馈与错误检查:在7z命令后追加if errorlevel 1 echo 压缩失败 & pause & exit /b 1,使脚本在7z返回非零退出码时中断并提示。
四、多目录并行压缩与分卷归档
当需同时处理多个独立路径,或输出体积受限(如刻录光盘、邮件附件)时,可利用循环语句与分卷参数-sv实现批量与分割功能;分卷单位使用字节值,常用b(bytes)、k(KB)、m(MB)后缀。
1、依次压缩多个文件夹:在批处理中使用for循环,例如for %%i in (projA projB docs) do 7z a "%%i.7z" "C:\src\%%i\" -mx=5,自动为projA、projB、docs三个子目录生成对应压缩包。
2、生成100MB分卷包:执行7z a -v100m -t7z full_backup.7z D:\backup\,输出full_backup.7z.001、full_backup.7z.002等连续分卷文件。
3、指定分卷起始编号:添加-v100m -v003使首个分卷命名为.003而非.001,便于合并至已有分卷序列。
五、静默模式与日志记录配置
自动化脚本运行时通常不需用户干预,应禁用进度条与交互提示;同时将操作过程写入日志文件,便于后续审计与故障排查。7z.exe提供详细级别控制(-bso、-bsp)及输出重定向机制。
1、完全静默执行:在命令末尾添加-bso0 -bsp0,关闭标准输出与进度显示,仅保留错误信息,例如7z a archive.7z src\ -bso0 -bsp0。
2、记录完整执行日志:使用>重定向符号捕获输出,如7z a log_test.7z logs\ > compress_log.txt 2>&1,其中2>&1确保错误流也写入同一文件。
3、按日期分离日志:在批处理中动态构造日志名,例如set LOGFILE=run_%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%.log 7z a job.7z input\ > "%LOGFILE%" 2>&1。

















