7-Zip wiersz polecenia, aby wyodrębnić folder z archiwum

16

Używam 7-Zip wiersza poleceń, aby wyodrębnić ZIP archiwum o nazwie abc.zip, która jest archiwum z folderu o nazwie „zamek” z trzech plików tekstowych w nim ( a.txt, b.txt, i c.txt).

Mój problem polega na wyodrębnieniu go za pomocą następującego polecenia:

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

7-Zip ekstrakty wszystko, ale to nie wyodrębnić folder „zamek”, to po prostu ich ekstrakty a.txt, b.txtoraz c.txti umieszcza je w miejscu przeznaczenia wyjściowego (to znaczy C:\abc).

Jak mogę zrobić 7-Zip po prostu wyodrębnić właściwy folder?

meds
źródło

Odpowiedzi:

9

Prawdopodobnie powinien znajdować się myślnik przed o:

-oC:\abc

Weź również pod uwagę -ropcję rekurencji.

kod
źródło
0

Musiałem rozwiązać podobny problem. Oto kod, którego użyłem. Ten skrypt odbiera folder i rozpakowuje wszystkie zamki błyskawiczne (i usuwa je później). Sztuką jest rozpakowanie danych do specjalnego folderu. Trochę nerwowy, ale działa ...

@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
użytkownik536281
źródło