Назад | Перейти на главную страницу

Как выполнить «for» с несколькими операциями в пакете dos

Мне нужно заархивировать все файлы Bak внутри папки и подпапок, и в конце каждого задания по архивированию удалить файл bak. Я написал примерно так, но это не работает:

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

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

   del "%%f"

Это тоже должно работать функционально:

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, поэтому не могу проверить:

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

Обратите внимание, что я изменил расширение файла.
С -t7z вы создаете файл 7z: не zip.
-mx9, кстати, даст вам лучшее сжатие, но это займет немного больше времени.