我有这个代码,我在其他帖子上使用7-zip在线发现我想压缩当前文件夹中的所有文件(如果可以添加更好的子文件夹)。目前它的工作原理,但我想排除已经压缩/压缩的文件(例如:.rar,.zip)。
是否有一些语法可以为我排除这一点,即排除特定的扩展名?另外,我不能反过来压缩我想要的扩展名,因为我不知道会遇到什么。
这可以压缩所有文件:
FOR %%i IN (*.*) DO "c:\Program Files\7-Zip\7z.exe" a "%%~ni.7z" "%%i" -mx=9 -ms=on -md=32m -mfb=256
我需要类似的东西:
FOR %%i IN (*.*, *NOT(.zip), NOT(.rar)*) DO "c:\Program Files\7-Zip\7z.exe" a "%%~ni.7z" "%%i" -mx=9 -ms=on -md=32m -mfb=256
答案: 由于@Aacini和@IZB提供的两种解决方案都很有用,我不能选择其中任何一种最好,因为它们都是有效的。
答案 0 :(得分:1)
试试这个:
@echo off
setlocal EnableDelayedExpansion
rem Define the list of extensions to exclude; it *must* end in dot!
set "exclude=.rar.zip.7z."
rem To include subfolders, just add /R switch to next FOR
FOR %%i IN (*.*) DO (
if "!exclude:%%~Xi.=!" equ "%exclude%" do (
rem Remove previous zip file, if any
del "%%~ni.7z" 2>NUL
"c:\Program Files\7-Zip\7z.exe" a "%%~ni.7z" "%%i" -mx=9 -ms=on -md=32m -mfb=256
)
)
答案 1 :(得分:0)
为什么7zip内置了此选项后重新发明轮子?
-x [r [ - | 0]]] {@ listfile |!wildcard}:eXclude filenames