Войти

Показать полную графическую версию : Распаковка большого количества zip.Помогите подправить пожалуйста


Rafael26
12-03-2013, 13:31
FOR /D /r %%F in ("*") DO (

pushd Н%
cd %%F
FOR %%X in (*.zip) DO (
"C:\Program Files\7-zip\7z.exe" x "%%X"
)
popd

)

у меня в папках по 2-3 архива и данный скрипт все в одну кучу распаковывает. помогите сделать так, чтобы каждых архив распаковывался в отдельную папку с тем же расположением и с таким же названием как и сам архив

Foreigner
12-03-2013, 19:09
@echo off

for /d /r %%i in (*) do (

for %%j in ("%%i\*.zip") do "%ProgramFiles%\7-zip\7z" x "%%j" -o"%%i\%%~nj"

)

gora
13-03-2013, 09:45
Foreigner, не знаю нужно ли это ТС, но распаковка будет не корректной при наличии вложенных архивов, т.к., получаемая таким образом папка, с именем архива, не будет соответствовать по содержимому тому, что содержит сам архив.
Пример:
Папка 1 содержит файл 2.zip
Файл 2.zip содержит два файла 3.zip и 4.zip
Файлы 3.zip и 4.zip содержат по одному файлу 3.txt и 4.txt соответственно.
После корректной распаковки в папке 1 должен остаться файл 2.zip и создастся папка 2 с двумя файлами 3.zip и 4.zip. На этом распаковка должна закончиться.
Но скрипт продолжит обработки папок и будет распаковывать появившиеся в папке 2 файлы 3.zip и 4.zip с созданием соответствующих папок 3 и 4. (рекурсия с архивами может быть и более глубокой и запутанной)
А если предположить, что в файле 2.zip кроме файлов 3.zip и 4.zip были еще и папки 3 и 4 с собственным содержимым, то содержимое архивов 3.zip и 4.zip будет распаковано в них и путаницы не избежать.




© OSzone.net 2001-2012