我想使用 7 zip 压缩和存档文件夹,但我希望它排除现有.7z
文件(如果存在),而不是使用.7z.7z
ext 复制它们。我发现了这一点,但它复制了已经压缩的文件
for /R "D:\Test\AAPS - 54" %%F in (*)
do (
C:\progra~1\7-zip\7z.exe a -mx9 "%%~dpnxF.7z" "%%F"
if exist "%%~dpnxF.7z" del "%%F"
)
答案1
我已将批处理文件更改为此,这似乎解决了我的大部分问题,但如果有人有任何想法,我仍然希望找到更好的方法
对于/R“D:\Test\AAPS - 54\AAPS - 54 - 复制”%%F 在()执行(C:\progra~1\7-zip\7z.exe a -x!.7z -mx9 "%%~dpnxF.7z" "%%F" 如果存在 "%%~dpnF.7z" 删除 "%%F.7z" 如果存在 "%%~dpnxF.7z" 删除 "%%F")
答案2
为了避免压缩预先存在的 .7z 文件,请在 FOR 循环中使用带有 /ad 开关的 dir 命令仅列出目录,然后将每个目录传递给要使用的 7z.exe 命令。
例如,要压缩“AAPS - 54 - Copy”文件夹的每个子目录而不压缩任何现有的 .7z 文件,请执行以下操作:
for /f "tokens=*" %%A in ('dir /s /b /ad "D:\Test\AAPS - 54\AAPS - 54 - Copy"') do (
@if not exist "%%A.7z" "%PROGRAMFILES%\7-zip\7z.exe" a -t7z "%%A.7z" "%%A")
您可以将“a -tz7”替换为您想要传递的任何参数,以压缩和存档您的文件夹。