Come decomprimere un file usando la riga di comando? [chiuso]


164

Quali comandi possono essere utilizzati tramite la riga di comando per decomprimere un file?
Preferibilmente qualcosa integrato in Windows o strumenti open source / gratuiti.


1
Una rapida ricerca su Google ha rivelato questo . Funziona in Windows (non è chiaro se intendi che stai usando Windows o se il sistema operativo è effettivamente DOS).
Jeremy,

26
A meno che tu non stia eseguendo una versione davvero vecchia di Windows (ME o precedente), la riga di comando di Windows non è DOS. :)
Tyler McHenry,

Il modo più semplice per decomprimere un file è utilizzare unzip.exe. Esempio: unzip.exe source.zip -d target_dir. URL: stahlworks.com/dev/index.php?tool=zipunzip
zappee

2
Windows con Powershell5 può farlo in modo nativo con Exand-Archivee Compress-Archive. Onora dove l'onore è dovuto.
LosManos,

1
unzip [nome file] .zip
Amranur Rahman,

Risposte:


53

11
Il primo URL elencato è una vera applicazione a 16 bit, quindi non funziona su sistemi operativi x64. Solo un avviso.
Mark Henderson,

38
se utilizzi Windows 7 o 10 con PowerShell puoi utilizzare:powershell.exe -NoP -NonI -Command "Expand-Archive '.\file.zip' '.\unziped\'"
AK_17

@AK_ che dire di Windows 8 o 8.1?
Frank Vu,

2
@AK_ dovresti rispondere da solo.
BrainStone,

221

Se hai già java sul tuo PC e la directory bin è sul tuo percorso (nella maggior parte dei casi), puoi usare la riga di comando:

jar xf test.zip

o se non nel tuo percorso:

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

Set completo di opzioni per lo strumento Jar disponibile qui .

Esempi:

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

37
Un suggerimento. È necessario JDK e non solo JRE se si desidera utilizzare jar.
Qben,

1
è strano, il m jar in realtà risolve parzialmente il problema, perché è in grado di elencare i file all'interno dell'archivio ed estrarre i file specificati, tuttavia, non è possibile estrarre tutti i file contemporaneamente ... piuttosto strano
mikus

@mikus: perché no, usa semplicemente il comando <code> jar.exe xvf Compressed.zip </code>
Xinus,

1
java.io.FileNotFoundException: test.zip (Il sistema non riesce a trovare il file specificato)
markj

C'è un modo per specificare una cartella di destinazione? (come quando scegli l'opzione di estrazione)?
Leonardo Alves Machado,

41

Innanzitutto, scrivere un'utilità di decompressione utilizzando vbscript per attivare la funzionalità di decompressione nativa in Windows. Quindi eseguire il pipe dello script dal file batch e quindi chiamarlo. Quindi è buono come stand alone. L'ho fatto in passato per numerosi compiti. In questo modo non richiede la necessità di applicazioni di terze parti, solo un file batch che fa tutto.

Ho messo un esempio sul mio blog su come decomprimere un file usando un file batch :

' 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"

Usalo in questo modo:

cscript //B j_unzip.vbs zip_file_name_goes_here.zip

3
È generalmente considerato utile inserire il codice nella risposta, e generalmente è male collegarsi al codice - solo un avvertimento!
Rich Bradshaw,

39

7-Zip , è open source, gratuito e supporta una vasta gamma di formati.

7z.exe x myarchive.zip

1
se esiste già un contenuto estratto e si desidera sovrascrivere il contenuto esistente senza essere richiesto, utilizzare "7z.exe x -y myarchive.zip"
Suketu Bhuta

22

Come altri hanno accennato, 7-zip è fantastico.

Nota: ho intenzione di comprimere e quindi decomprimere un file. Unzip è in fondo.

Il mio contributo:

Ottenere l

Versione a riga di comando a 7 zip

URL corrente

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

La sintassi?

È possibile inserire quanto segue in un file .bat

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

Ho mostrato alcune opzioni.

-r è ricorsivo. Di solito quello che vuoi con la funzionalità zip.

a sta per "archivio". Questo è il nome del file zip di output.

-p è per una password (opzionale)

-w è una directory di origine. Ciò anniderà i file correttamente nel file zip, senza ulteriori informazioni sulla cartella.

-mem è il livello di crittografia.

Ce ne sono altri Ma quanto sopra ti farà correre.

NOTA: l'aggiunta di una password renderà il file zip ostile quando si tratta di visualizzare il file tramite Esplora risorse. Il client potrebbe aver bisogno della propria copia di 7-zip (o winzip o altro) per visualizzare il contenuto del file.

EDIT ::::::::::: :( solo cose extra).

Esiste una versione della "riga di comando" che probabilmente è più adatta a questo: http://www.7-zip.org/download.html

(collegamento diretto (al momento della stesura) diretto) http://sourceforge.net/projects/sevenzip/files/7-Zip/9.20/7za920.zip/download

Quindi il comando zip sarebbe (con la versione da riga di comando dello strumento 7 zip).

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

Ora la parte di decompressione : (per decomprimere il file appena creato)

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

In alternativa all'argomento "e", c'è l'argomento ax.

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

Documentazione qui:

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


11

Grazie Rich, ne prenderò nota. Quindi, ecco lo script per la mia soluzione. Non richiede strumenti di decompressione di terze parti.

Includi lo script seguente all'inizio del file batch per creare la funzione, quindi per chiamare la funzione, il comando è ... cscript /B j_unzip.vbs zip_file_name_goes_here.zip

Ecco lo script da aggiungere all'inizio ...

REM Ripristino della cartella di lavoro alla directory corrente per compatibilità con Vista e 7
% ~ D0
CD% ~ dp0
Cartella REM modificata

REM File di questo upzip di script ...

    > j_unzip.vbs ECHO '
    >> j_unzip.vbs ECHO 'Decomprimi uno script di file
    >> j_unzip.vbs ECHO '
    >> j_unzip.vbs ECHO 'È un casino, lo so !!!
    >> j_unzip.vbs ECHO '
    >> j_unzip.vbs ECHO.
    >> j_unzip.vbs ECHO 'Dim ArgObj, var1, var2
    >> j_unzip.vbs ECHO Set ArgObj = WScript.Arguments
    >> j_unzip.vbs ECHO.
    >> j_unzip.vbs ECHO If (Wscript.Arguments.Count ^> 0) Quindi
    >> j_unzip.vbs ECHO. var1 = ArgObj (0)
    >> j_unzip.vbs ECHO Altro
    >> j_unzip.vbs ECHO. var1 = ""
    >> j_unzip.vbs ECHO End if
    >> j_unzip.vbs ECHO.
    >> j_unzip.vbs ECHO Se var1 = "" allora
    >> j_unzip.vbs ECHO. strFileZIP = "example.zip"
    >> j_unzip.vbs ECHO Altro
    >> j_unzip.vbs ECHO. strFileZIP = var1
    >> j_unzip.vbs ECHO End if
    >> j_unzip.vbs ECHO.
    >> j_unzip.vbs ECHO 'La posizione del file zip.
    >> 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 'La cartella in cui estrarre i contenuti.
    >> j_unzip.vbs ECHO outFolder = sCurPath ^ & "\"
    >> j_unzip.vbs ECHO.
    >> j_unzip.vbs ECHO. WScript.Echo ("Estrazione del file" ^ & strFileZIP)
    >> j_unzip.vbs ECHO.
    >> j_unzip.vbs ECHO Set objShell = CreateObject ("Shell.Application")
    >> j_unzip.vbs ECHO Set objSource = objShell.NameSpace (strZipFile) .Items ()
    >> j_unzip.vbs ECHO Set 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 ("Estratto.")
    >> j_unzip.vbs ECHO.

2
bello :) Lo uso per scaricare la riga di comando di 7zip (il cui eseguibile è compresso (che strano))
Sebastian

Funziona come previsto, ora posso comprimere qualsiasi cartella e creare exe usando iexpress e decomprimerlo usando questo. Funziona anche su Windows 10.
Kiran Kumar,


5

Inizialmente i file ZIP venivano creati con il software della riga di comando MS-DOS di PKWare, i due programmi erano PKZIP.EXE e PKUNZIP.EXE. Penso che puoi ancora scaricare PKUNZIP dal sito PKWare qui:

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

La riga di comando effettiva potrebbe essere simile a questa:

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

1
Questa è vecchia scuola!
granadaCoder

3

Prendi un eseguibile da info-zip .

Info-ZIP supporta l'hardware dai microcomputer fino ai supercomputer Cray, in esecuzione su quasi tutte le versioni di Unix, VMS, OS / 2, Windows 9x / NT / ecc. (aka Win32), Windows 3.x, Windows CE, MS-DOS, AmigaDOS, Atari TOS, Acorn RISC OS, BeOS, Mac OS, SMS / QDOS, MVS e OS / 390 OE, VM / CMS, FlexOS, Tandem NSK e Human68K (giapponese). C'è anche un po '(vecchio) supporto per LynxOS, TOPS-20, AOS / VS e Novell NLM. Librerie condivise (DLL) sono disponibili per Unix, OS / 2, Win32 e Win16 e sono disponibili interfacce grafiche per Win32, Win16, WinCE e Mac OS.


1

Copia il codice seguente in un file batch ed eseguilo. Di seguito è necessario che Winzip sia installato / accessibile dal tuo computer. Cambia le variabili secondo le tue necessità.

@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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.