Как я могу написать пакетный файл для архивирования файлов, находящихся в подкаталогах?

Я хочу написать пакетный скрипт, который будет добавлять файлы архивов, находящиеся в подкаталогах. Достичь имени должно быть именем подкаталогов.

Например, у меня есть следующая структура:

file.bat
dir1
-- file1.txt
-- file2.csv
dir2
-- file3.txt
-- file4.csv

Я хочу запустить файл.bat и получить два файла:

dir1.zip
-- file1.txt
-- file2.csv
dir2.zip
-- file3.txt
-- file4.csv

Я написал такое:

FOR /D %%i IN (.\*) DO "C:\Program Files\7-Zip\7za920\7za.exe" a -tzip "%%~ni.zip" "%%i"

Но я получил

dir1.zip
--dir1
--- file1.txt
--- file2.csv
--dir2.zip
--- file3.txt
--- file4.csv

Это неправильно.

Как я могу получить правильный результат с помощью 7-zip?

Благодарю.

1 ответ

Проверьте это:

FOR /D %%i IN (*) DO "C:\Program Files\7-Zip\7za920\7za.exe" a -tzip "%%~ni.zip" "%%i\*"

Это создаст ZIP файлы без имени папки.

@echo off
FOR /D %%i IN (*) DO (
 pushd "%%i"
 "C:\Program Files\7-Zip\7za920\7za.exe" a -tzip "..\%%~ni.zip" *
 popd
)
pause

licensed under cc by-sa 3.0 with attribution.