15

Я использую командную строку 7-Zip для извлечения ZIP- архива с именем abc.zip который представляет собой архив с папкой «zipper» с тремя текстовыми файлами в нем (a.txt , b.txt и c.txt).

Моя проблема, когда я извлекаю его с помощью следующей команды:

7z e C:\abc\abc.zip -y oC:\abc

7-Zip извлекает все, но не извлекает папку 'zipper', он просто извлекает a.txt , b.txt и c.txt и помещает их в место назначения вывода (то есть C:\abc).

Как я могу сделать 7-Zip просто распаковать фактическую папку?

3 ответа3

19

Вам нужно использовать 7z x archive.zip для распаковки с полными путями. Смотрите: http://sevenzip.sourceforge.jp/chm/cmdline/commands/extract_full.htm

7

Вероятно, перед символом o должен стоять дефис:

-oC:\abc

Также рассмотрите опцию -r для рекурсии.

1

Мне пришлось решить аналогичную проблему. Вот код, который я использовал. Этот скрипт получает папку и распаковывает все почтовые индексы (и впоследствии удаляет их). Хитрость заключается в том, чтобы распаковать данные в специальную папку. Немного острый, но это работает ...

@echo off

set SEVEN_ZIP_HOME=C:\Program Files\7-Zip

set TEMPDIR=temp

set WORKING_DIR="%1"

if "%WORKING_DIR%"==""  set WORKING_DIR=%~dp0

cd /d %WORKING_DIR%

if not exist %TEMPDIR% md %TEMPDIR%

for %%i in ("%WORKING_DIR%\*.zip") do call :unzipAndDelete "%%i"

rd %TEMPDIR%

goto :end

:unzipAndDelete 

set ZIP_FILE=%~1

call :extractName %ZIP_FILE%

call "%SEVEN_ZIP_HOME%\7z.exe" e "%ZIP_FILE%" -o./%TEMPDIR%

copy .\%TEMPDIR%\*.* %FILENAME%.log

del .\%TEMPDIR%\*.* /q

del "%ZIP_FILE%"

goto :end

:extractName 

set FILENAME=%~n1
goto :end


:end

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .