7za v18.1备份脚本无法排除exclude.txt指定内容求助
搞定7za备份排除规则不生效的问题
嘿,我来帮你解决这个7za排除规则失效的问题!之前我也碰到过类似的情况,主要是对7za的参数顺序和排除规则格式没拿捏准,下面一步步给你理顺:
先搞清楚核心问题
7za v18.1的排除规则要生效,得抓住两个关键:
- 排除参数的写法和顺序必须正确(得用
-x@来引用排除列表文件) - 排除规则的路径/通配符格式得符合7za的要求
你的exclude.txt里既有绝对路径文件夹,又有各种通配符规则,这里得稍微调整下写法,同时脚本参数顺序也不能乱。
调整后的备份脚本
先给你一个修正后的批处理脚本,你可以直接用或者参考修改:
@echo off set "BACKUP_ZIP=C:\Backup\latest_backup.zip" set "INCLUDE_LIST=C:\Backup\include.txt" set "EXCLUDE_LIST=C:\Backup\exclude.txt" REM 重点:参数顺序是压缩包 → 包含列表 → 排除列表,-r是递归子目录(备份文件夹必备) 7za a -tzip -r "%BACKUP_ZIP%" @"%INCLUDE_LIST%" -x@"%EXCLUDE_LIST%" if %errorlevel% equ 0 ( echo 备份搞定啦! ) else ( echo 备份出问题了,错误码:%errorlevel% ) pause
划重点:一定要把
-x@排除参数放在包含列表@INCLUDE_LIST后面,不然会把你要备份的文件夹都给排除掉,这是很多人踩过的坑!
修正exclude.txt的规则内容
你的排除规则需要调整下格式,确保7za能精准识别:
REM 排除指定的绝对路径文件夹(结尾加\明确是文件夹,避免和同名文件混淆) C:\Users\Chris\Dropbox\Apps\ REM 递归排除所有.tmp文件(不管在哪个子目录) *.tmp REM 排除所有~$开头的临时文件 ~$* REM 排除desktop.ini配置文件 desktop.ini REM 排除所有.lock锁文件 *.lock REM 排除以~结尾的临时文件/文件夹 *~ REM 排除以.~开头的临时文件/文件夹 .~*
小提示:
- 文件夹路径结尾加
\很重要,7za会明确识别这是文件夹而不是文件- 通配符规则不用加前缀路径,因为
-r参数会递归所有子目录,自动匹配所有符合条件的文件- 用
REM开头的是注释,7za会自动忽略,方便你备注规则含义
验证排除规则的小技巧
要是你不确定规则有没有生效,可以加个-v参数让7za显示详细备份过程,这样就能看到哪些文件被跳过(排除)了:
7za a -tzip -r -v "%BACKUP_ZIP%" @"%INCLUDE_LIST%" -x@"%EXCLUDE_LIST%"
备份完成后也可以用7za l "%BACKUP_ZIP%"命令查看压缩包里的内容,确认排除的文件有没有被加进去。
最后再提几个常见坑
- 编码问题:确保exclude.txt是ANSI编码,要是用UTF-8带BOM的话,7za可能读不懂规则,导致排除失效
- 大小写敏感:Windows虽然不区分大小写,但7za有时候会认,要是遇到问题可以加
-ssc-参数关闭大小写敏感 - 多余空格:exclude.txt里每行规则不要有多余的空格,不然7za会把空格当成规则的一部分,导致匹配失败
内容的提问来源于stack exchange,提问作者cdub
相关产品推荐
相关产品推荐

