7-Zip командная строка для извлечения папки из архива

16

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

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

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

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

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

МЕДС
источник

Ответы:

9

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

-oC:\abc

Также рассмотрим -rвариант рекурсии.

KOD
источник
0

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

@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
user536281
источник