Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Распаковка большого количества zip.Помогите подправить пожалуйста (http://forum.oszone.net/showthread.php?t=256097)

Rafael26 12-03-2013 13:31 2109255

Распаковка большого количества zip.Помогите подправить пожалуйста
 
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 2109558

Код:

@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 2110042

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 будет распаковано в них и путаницы не избежать.


Время: 14:11.

Время: 14:11.
© OSzone.net 2001-