如何在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" 

这也应该这样做,function方式:

 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 

从我的头顶来看,目前我不在Windows环境中,所以我无法validation:

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

请注意,我更改了文件的扩展名。
用-t7z你正在创build一个7z文件:不是一个zip文件。
-mx9会给你更好的压缩方式,但是会花费更长的时间。