如何在 DOS 批处理中使用多个操作执行“for”

如何在 DOS 批处理中使用多个操作执行“for”

我需要将文件夹和子文件夹中的所有文件压缩为 Bak,并在每次压缩作业结束时删除 bak 文件。我写了类似这样的代码,但它不起作用:

   for /F %%f in ('dir /s /b *.bak') do goto=1
   :1

   "7za.exe" a -t7z -mx3 "%%f.zip" "%%f"

   del "%%f"

答案1

这也应该可以做到,功能性的方式:

for /F %%f in ('dir /s /b *.bak') do call :myfunc %%f
goto :eof
:myfunc
7za.exe a -t7z -mx3 "%1.7z" "%1"
del "%1"
goto :eof

答案2

据我所知,我目前不在 Windows 环境中,因此无法验证:

for /F %%f in ('dir /s /b *.bak') do (
  7za.exe a -t7z -mx3 "%%f.7z" "%%f"
  del "%%f"
)

请注意,我更改了文件的扩展名。
使用 -t7z 您将创建一个 7z 文件:不是 zip。顺便说
一下,-mx9 会给您更好的压缩效果,但会花费更长的时间。

相关内容