如何忽略已压缩文件并删除原始文件?7zip批处理优化求助
解决7-Zip批处理重复压缩及删除原文件问题
我懂你这个烦恼!之前用批处理跑7-Zip的时候也踩过重复压缩的坑,给你调整一下代码就能同时解决「忽略已有的.zip文件」和「压缩完成后删除原始文件」这两个需求:
FOR %%i IN ("C:\filepath....\*HAEC040.D*") DO ( IF NOT "%%~xi"==".zip" ( "C:\Program Files\7-Zip\7z.exe" a -mx -sdel "%%~i.zip" "%%i" ) )
关键修改点说明:
- 忽略.zip文件:通过
IF NOT "%%~xi"==".zip"判断当前文件的后缀名,如果不是.zip才执行压缩操作,彻底避免重复处理已经生成的压缩包。 - 压缩后安全删除原文件:给7-Zip命令加上
-sdel参数,这个参数会在压缩成功完成后自动删除原始文件,比单独加del命令更稳妥——不会因为压缩失败、文件损坏等情况误删源文件。 - 保留了你原代码里的
-mx参数,这是7-Zip的默认压缩级别,要是需要更高压缩率可以改成-mx9,追求速度的话就换成-mx1。
如果担心误删,建议先去掉-sdel参数测试几次,确认压缩出来的文件完全没问题后,再加上这个参数正式运行。
内容的提问来源于stack exchange,提问作者Angel




