7-Zip-Befehlszeile zum Extrahieren eines Ordners aus einem Archiv

16

Ich bin mit der 7-Zip Kommandozeile ein extrahieren ZIP - Archiv namens , abc.zipdie ein Archiv mit einem Ordner namens ‚Reißverschluss‘ mit drei Textdateien in ihm ( a.txt, b.txtund c.txt).

Mein Problem ist, wenn ich es mit dem folgenden Befehl extrahiere:

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

7-Zip - Extrakte alles, aber es extrahiert nicht der Ordner ‚Reißverschluss‘, es nur Auszüge a.txt, b.txtund c.txtund legt sie in dem Ausgabeziel (das heißt C:\abc).

Wie kann ich 7-Zip so einstellen, dass es nur den aktuellen Ordner extrahiert?

Medikamente
quelle

Antworten:

9

Es sollte wahrscheinlich einen Bindestrich vor dem sein o:

-oC:\abc

Berücksichtigen Sie auch die -rOption für die Rekursion.

kod
quelle
0

Ich musste ein ähnliches Problem lösen. Hier ist der Code, den ich verwendet habe. Dieses Skript empfängt einen Ordner und entpackt alle Reißverschlüsse (und löscht sie anschließend). Der Trick besteht darin, die Daten in einen speziellen Ordner zu entpacken. Ein bisschen nervös, aber es funktioniert ...

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