Wie entpacke ich eine Datei über die Kommandozeile? [geschlossen]


164

Which commands can be used via the command line to unzip a file?
Preferably something built into Windows or open source/free tools.


1
A quick Google search turned up this. That works in windows (it's not clear whether you mean that you're using Windows, or the OS is actually DOS).
Jeremy

26
Unless you're running a really old version of windows (ME or earlier), the windows command line is not DOS. :)
Tyler McHenry

The easyest way to unzip a file is using unzip.exe. Example: unzip.exe source.zip -d target_dir. URL: stahlworks.com/dev/index.php?tool=zipunzip
zappee

2
Windows with Powershell5 can do that natively with Exand-Archive and Compress-Archive. Honour where honour is due.
LosManos

1
unzip [filename].zip
Amranur Rahman

Antworten:


53

11
Die erste aufgeführte URL ist eine echte 16-Bit-Anwendung und funktioniert daher nicht auf x64-Betriebssystemen. Nur ein Kopf hoch.
Mark Henderson

38
Wenn Sie unter Windows 7 oder 10 mit Powershell arbeiten, können Sie Folgendes verwenden:powershell.exe -NoP -NonI -Command "Expand-Archive '.\file.zip' '.\unziped\'"
AK_

@AK_ was ist mit Windows 8 oder 8.1?
Frank Vu

2
@AK_ du solltest das zu seiner eigenen Antwort machen.
BrainStone

221

Wenn Sie bereits Java auf Ihrem PC haben und sich das bin-Verzeichnis (in den meisten Fällen) in Ihrem Pfad befindet, können Sie die folgende Befehlszeile verwenden:

jar xf test.zip

oder wenn nicht auf deinem Weg:

C:\Java\jdk1.6.0_03\bin>jar xf test.zip

Komplette Optionen für das JAR-Tool finden Sie hier .

Beispiele:

Extract jar file
    jar x[v]f jarfile [inputfiles] [-Joption] 
    jar x[v] [inputfiles] [-Joption]

36
Ein Hinweis. Sie benötigen das JDK und nicht nur das JRE, wenn Sie jar verwenden möchten.
Qben

1
Es ist seltsam, m jar löst das Problem tatsächlich teilweise, weil es in der Lage ist, die Dateien im Archiv
aufzulisten

@mikus: warum nicht, verwenden Sie einfach den Befehl <code> jar.exe xvf Compressed.zip </ code>
Xinus

1
java.io.FileNotFoundException: test.zip (Das System kann die angegebene Datei nicht finden)
markj

Gibt es eine Möglichkeit, einen Zielordner anzugeben? (wie wenn Sie die Option zum Extrahieren wählen)?
Leonardo Alves Machado

41

Schreiben Sie zunächst ein Entpackungsdienstprogramm mit vbscript, um die native Entpackungsfunktion in Windows auszulösen. Leiten Sie dann das Skript aus Ihrer Batch-Datei heraus und rufen Sie es auf. Dann ist es so gut wie allein. Ich habe es in der Vergangenheit für zahlreiche Aufgaben getan. Auf diese Weise sind keine Anwendungen von Drittanbietern erforderlich, sondern nur die eine Batchdatei, die alles erledigt.

Ich habe in meinem Blog ein Beispiel zum Entpacken einer Datei mithilfe einer Batch-Datei veröffentlicht :

' j_unzip.vbs
'
' UnZip a file script
'
' By Justin Godden 2010
'
' It's a mess, I know!!!
'

' Dim ArgObj, var1, var2
Set ArgObj = WScript.Arguments

If (Wscript.Arguments.Count > 0) Then
 var1 = ArgObj(0)
Else
 var1 = ""
End if

If var1 = "" then
 strFileZIP = "example.zip"
Else
 strFileZIP = var1
End if

'The location of the zip file.
REM Set WshShell = CreateObject("Wscript.Shell")
REM CurDir = WshShell.ExpandEnvironmentStrings("%%cd%%")
Dim sCurPath
sCurPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".")
strZipFile = sCurPath & "\" & strFileZIP
'The folder the contents should be extracted to.
outFolder = sCurPath & "\"

 WScript.Echo ( "Extracting file " & strFileZIP)

Set objShell = CreateObject( "Shell.Application" )
Set objSource = objShell.NameSpace(strZipFile).Items()
Set objTarget = objShell.NameSpace(outFolder)
intOptions = 256
objTarget.CopyHere objSource, intOptions

 WScript.Echo ( "Extracted." )

' This bit is for testing purposes
REM Dim MyVar
REM MyVar = MsgBox ( strZipFile, 65, "MsgBox Example"

Verwenden Sie es so:

cscript //B j_unzip.vbs zip_file_name_goes_here.zip

3
Es wird im Allgemeinen als gut angesehen, Code in Ihre Antwort einzufügen, und im Allgemeinen als schlecht, Code zu verlinken - nur ein Kopf hoch!
Rich Bradshaw

39

7-Zip ist Open Source, kostenlos und unterstützt eine Vielzahl von Formaten.

7z.exe x myarchive.zip

1
Wenn der extrahierte Inhalt bereits vorhanden ist und Sie den vorhandenen Inhalt überschreiben möchten, ohne dazu aufgefordert zu werden, verwenden Sie "7z.exe x -y myarchive.zip"
Suketu Bhuta

22

Wie andere angedeutet haben, ist 7-Zip großartig.

Hinweis: Ich werde eine Datei komprimieren und dann entpacken. Entpacken ist unten.

Mein Beitrag:

Bekommen das

7-Zip-Befehlszeilenversion

Aktuelle URL

http://www.7-zip.org/download.html

Die Syntax?

Sie können Folgendes in eine .bat-Datei einfügen

"C:\Program Files\7-Zip\7z.exe" a MySuperCoolZipFile.zip "C:\MyFiles\*.jpg" -pmypassword -r -w"C:\MyFiles\" -mem=AES256

Ich habe einige Optionen gezeigt.

-r ist rekursiv. Normalerweise was Sie mit Zip-Funktionalität wollen.

a ist für "Archiv". Das ist der Name der Ausgabe-Zip-Datei.

-p ist für ein Passwort (optional)

-w ist das Quellverzeichnis. Dadurch werden Ihre Dateien ohne zusätzliche Ordnerinformationen korrekt in der Zip-Datei verschachtelt.

-mem ist die Verschlüsselungsstärke.

Da sind andere. Aber das oben Genannte bringt Sie zum Laufen.

HINWEIS: Durch Hinzufügen eines Kennworts wird die Zip-Datei unfreundlich, wenn die Datei über den Windows Explorer angezeigt wird. Der Client benötigt möglicherweise eine eigene Kopie von 7-zip (oder winzip oder einem anderen), um den Inhalt der Datei anzuzeigen.

EDIT :::::::::::: (nur zusätzliche Sachen).

Es gibt eine "Befehlszeilen" -Version, die wahrscheinlich besser dafür geeignet ist: http://www.7-zip.org/download.html

(aktueller (zum Zeitpunkt des Schreibens) direkter Link) http://sourceforge.net/projects/sevenzip/files/7-Zip/9.20/7za920.zip/download

Der Befehl zip wäre also (mit der Befehlszeilenversion des 7-Zip-Tools).

"C:\WhereIUnzippedCommandLineStuff\7za.exe" a MySuperCoolZipFile.zip "C:\MyFiles\*.jpg" -pmypassword -r -w"C:\MyFiles\" -mem=AES256

Nun der Entpackungsabschnitt : (um die gerade erstellte Datei zu entpacken)

"C:\WhereIUnzippedCommandLineStuff\7zipCommandLine\7za.exe" e MySuperCoolZipFile.zip "*.*" -oC:\SomeOtherFolder\MyUnzippedFolder -pmypassword -y -r

Als Alternative zum Argument "e" gibt es das Argument ax.

  e: Extract files from archive (without using directory names)
  x: eXtract files with full paths

Dokumentation hier:

http://sevenzip.sourceforge.jp/chm/cmdline/commands/extract.htm


11

Danke Rich, das werde ich zur Kenntnis nehmen. Hier ist das Skript für meine eigene Lösung. Es sind keine Entpackungs-Tools von Drittanbietern erforderlich.

Fügen Sie das folgende Skript am Anfang der Batchdatei ein, um die Funktion zu erstellen. Um die Funktion aufzurufen, lautet der Befehl ... cscript /B j_unzip.vbs zip_file_name_goes_here.zip

Hier ist das Skript, das oben hinzugefügt werden soll ...

REM Ändern des Arbeitsordners aus Gründen der Vista & 7-Kompatibilität zurück in das aktuelle Verzeichnis
% ~ d0
CD% ~ dp0
REM-Ordner geändert

REM Die Dateien dieses Skripts upzip ...

    > j_unzip.vbs ECHO '
    >> j_unzip.vbs ECHO 'Entpacke ein Dateiskript
    >> j_unzip.vbs ECHO '
    >> j_unzip.vbs ECHO 'Es ist ein Durcheinander, ich weiß !!!
    >> j_unzip.vbs ECHO '
    >> j_unzip.vbs ECHO.
    >> j_unzip.vbs ECHO 'Dim ArgObj, var1, var2
    >> j_unzip.vbs ECHO Setze ArgObj = WScript.Arguments
    >> j_unzip.vbs ECHO.
    >> j_unzip.vbs ECHO If (Wscript.Arguments.Count ^> 0) Then
    >> j_unzip.vbs ECHO. var1 = ArgObj (0)
    >> j_unzip.vbs ECHO Sonst
    >> j_unzip.vbs ECHO. var1 = ""
    >> j_unzip.vbs ECHO End if
    >> j_unzip.vbs ECHO.
    >> j_unzip.vbs ECHO Wenn var1 = "" dann
    >> j_unzip.vbs ECHO. strFileZIP = "example.zip"
    >> j_unzip.vbs ECHO Sonst
    >> j_unzip.vbs ECHO. strFileZIP = var1
    >> j_unzip.vbs ECHO End if
    >> j_unzip.vbs ECHO.
    >> j_unzip.vbs ECHO 'Der Speicherort der Zip-Datei.
    >> j_unzip.vbs ECHO REM Set WshShell = CreateObject ("Wscript.Shell")
    >> j_unzip.vbs ECHO REM CurDir = WshShell.ExpandEnvironmentStrings ("%% cd %%")
    >> j_unzip.vbs ECHO Dim sCurPath
    >> j_unzip.vbs ECHO sCurPath = CreateObject ("Scripting.FileSystemObject"). GetAbsolutePathName (".")
    >> j_unzip.vbs ECHO strZipFile = sCurPath ^ & "\" ^ & strFileZIP
    >> j_unzip.vbs ECHO 'Der Ordner, in den der Inhalt extrahiert werden soll.
    >> j_unzip.vbs ECHO outFolder = sCurPath ^ & "\"
    >> j_unzip.vbs ECHO.
    >> j_unzip.vbs ECHO. WScript.Echo ("Datei extrahieren" ^ & strFileZIP)
    >> j_unzip.vbs ECHO.
    >> j_unzip.vbs ECHO Set objShell = CreateObject ("Shell.Application")
    >> j_unzip.vbs ECHO Setze objSource = objShell.NameSpace (strZipFile) .Items ()
    >> j_unzip.vbs ECHO Setze objTarget = objShell.NameSpace (outFolder)
    >> j_unzip.vbs ECHO intOptions = 256
    >> j_unzip.vbs ECHO objTarget.CopyHere objSource, intOptions
    >> j_unzip.vbs ECHO.
    >> j_unzip.vbs ECHO. WScript.Echo ("Extrahiert")
    >> j_unzip.vbs ECHO.

2
schön :) Ich benutze dies, um die 7zip-Befehlszeile herunterzuladen (deren ausführbare Datei komprimiert ist (wie seltsam))
Sebastian

Dies funktioniert wie erwartet, jetzt kann ich jeden Ordner komprimieren und exe mit iexpress erstellen und damit entpacken. Funktioniert das auch in Windows 10?
Kiran Kumar


5

Ursprünglich wurden ZIP-Dateien mit der MS-DOS-Befehlszeilensoftware von PKWare erstellt. Die beiden Programme waren PKZIP.EXE und PKUNZIP.EXE. Ich denke, Sie können PKUNZIP immer noch von der PKWare-Site hier herunterladen:

http://www.pkware.com/software-pkzip/dos-compression

Die eigentliche Befehlszeile könnte ungefähr so ​​aussehen:

C:\>pkunzip c:\myzipfile.zip c:\extracttothisfolder\

1
Das ist oldSchool!
GranadaCoder

3

Besorgen Sie sich eine ausführbare Datei aus info-zip .

Info-ZIP unterstützt Hardware von Mikrocomputern bis hin zu Cray-Supercomputern und läuft auf fast allen Versionen von Unix, VMS, OS / 2, Windows 9x / NT / etc. (auch bekannt als Win32), Windows 3.x, Windows CE, MS-DOS, AmigaDOS, Atari TOS, Acorn RISC-Betriebssystem, BeOS, Mac OS, SMS / QDOS, MVS und OS / 390 OE, VM / CMS, FlexOS, Tandem-NSK und Human68K (Japanisch). Es gibt auch einige (alte) Unterstützung für LynxOS-, TOPS-20-, AOS / VS- und Novell-NLMs. Shared Libraries (DLLs) sind für Unix, OS / 2, Win32 und Win16 verfügbar, und grafische Oberflächen sind für Win32, Win16, WinCE und Mac OS verfügbar.


1

Kopieren Sie den folgenden Code in eine Batchdatei und führen Sie ihn aus. Im Folgenden muss Winzip von Ihrem Computer aus installiert sein / darauf zugreifen können. Ändern Sie die Variablen nach Bedarf.

@ECHO OFF
SET winzip_path="C:\Program Files\WinZip"
SET source_path="C:\Test"
SET output_path="C:\Output\"
SET log_file="C:\Test\unzip_log.txt"
SET file_name="*.zip"

cd %source_path%
echo Executing for %source_path% > %log_file%

FOR /f "tokens=*" %%G IN ('dir %file_name% /b') DO (
echo Processing : %%G
echo File_Name : %%G >> %log_file%
%winzip_path%\WINZIP32.EXE -e %%G %output_path%
)

PAUSE
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.