2009-06-20 16 views
112

Posso decomprimere i file tramite la riga di comando? Preferibilmente usando strumenti open source/gratuiti.Come decomprimere un file usando la riga di comando?

+22

A meno che non si stia utilizzando una versione di Windows veramente vecchia (ME o precedente), la riga di comando di Windows non è DOS. :) –

+1

Una rapida ricerca su Google ha trovato [questo] (http://dotnetperls.com/7-zip-example). Funziona in Windows (non è chiaro se intendi che stai usando Windows, o che il sistema operativo sia DOS). – Jeremy

risposta

2

Prendere 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). Esiste anche un (vecchio) supporto per LynxOS, TOPS-20, AOS/VS e Novell NLM. Le librerie condivise (DLL) sono disponibili per Unix, OS/2, Win32 e Win16 e le interfacce grafiche sono disponibili per Win32, Win16, WinCE e Mac OS.

23

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

7z.exe x myarchive.zip 
1

Originariamente ZIP file sono stati creati con il software di riga di comando di MS-DOS da PKWare, i due programmi sono stati PKZIP.EXE e PKUNZIP.EXE. Penso che si può ancora scaricare PKUNZIP al sito PKWare qui:

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

La riga di comando effettivo potrebbe essere simile a questa:

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

Se si dispone già di java sul proprio PC, e il directory bin è nel tuo percorso (nella maggior parte dei casi), è possibile utilizzare la riga di comando:

jar xf test.zip 

o se non nel vostro percorso:

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

Set completo di opzioni per lo strumento jar disponibile here.

Esempi:

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

Un suggerimento. Hai bisogno del JDK, e non solo del JRE se vuoi usare jar. – Qben

+1

è strano, 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 allo stesso tempo ... piuttosto strano – mikus

+0

@ mikus: perché no, basta usare il comando jar.exe xvf Compressed.zip Xinus

8

C'è un articolo su come arrivare a built-nella gestione dei file di Windows .ZIP con VBscript qui:

http://www.aspfree.com/c/a/Windows-Scripting/Compressed-Folders-in-WSH/3/

(le ultime offerte codice di Blurb con l'estrazione

+0

Non è facile ma questa sembra essere un'ottima soluzione usando solo la cartella zip nativa di Windows funzionalità. Ho cercato qualcosa per un po '. Grazie! – Dre

35

In primo luogo, scrivere un'utilità di decompressione utilizzando vbscript per attivare la funzionalità di decompressione nativa in Windows. Quindi scollegare lo script dal file batch e quindi chiamarlo. Quindi è buono come stare da solo.L'ho fatto in passato per numerose attività. In questo modo non richiede la necessità di applicazioni di terze parti, solo l'unico file batch che fa tutto.

ho messo an example on my blog on how to unzip a file using a batch file:

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

usare in questo modo:

cscript //B j_unzip.vbs zip_file_name_goes_here.zip 
+3

In genere è consigliabile inserire il codice nella risposta e, in generale, non è consigliabile effettuare il collegamento per il codice: basta un avviso! –

9

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

includere lo script di seguito all'inizio del file batch per creare la funzione, e poi per chiamare la funzione, il comando è ... cscript /B j_unzip.vbs zip_file_name_goes_here.zip

Ecco lo script per aggiungere alla parte superiore ..

 
REM Changing working folder back to current directory for Vista & 7 compatibility 
%~d0 
CD %~dp0 
REM Folder changed 

REM This script upzip's files... 

    > j_unzip.vbs ECHO ' 
    >> j_unzip.vbs ECHO ' UnZip a file script 
    >> j_unzip.vbs ECHO ' 
    >> j_unzip.vbs ECHO ' It's a mess, I know!!! 
    >> 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) Then 
    >> j_unzip.vbs ECHO. var1 = ArgObj(0) 
    >> j_unzip.vbs ECHO Else 
    >> j_unzip.vbs ECHO. var1 = "" 
    >> j_unzip.vbs ECHO End if 
    >> j_unzip.vbs ECHO. 
    >> j_unzip.vbs ECHO If var1 = "" then 
    >> j_unzip.vbs ECHO. strFileZIP = "example.zip" 
    >> j_unzip.vbs ECHO Else 
    >> j_unzip.vbs ECHO. strFileZIP = var1 
    >> j_unzip.vbs ECHO End if 
    >> j_unzip.vbs ECHO. 
    >> j_unzip.vbs ECHO 'The location of the zip file. 
    >> 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 'The folder the contents should be extracted to. 
    >> j_unzip.vbs ECHO outFolder = sCurPath ^& "\" 
    >> j_unzip.vbs ECHO. 
    >> j_unzip.vbs ECHO. WScript.Echo ("Extracting 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 ("Extracted.") 
    >> j_unzip.vbs ECHO. 
+2

beautiful :) Lo uso per scaricare la riga di comando di 7zip (il cui eseguibile è zippato (che strano)) – Sebastian

+0

Questo funziona come previsto, ora posso comprimere qualsiasi cartella e fare exe usando iexpress e decomprimere usando questo. Funziona anche su Windows 10. – Developer

13

Come altri hanno alluso, 7-zip è grande.

Nota: eseguo il zip e quindi decomprimere un file. Unzip è in fondo.

mio contributo:

Prendi il

7-Zip riga di comando Versione

URL attuale

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

La sintassi?

si può mettere 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 funzionalità zip.

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

-p è una password (opzionale)

w è una directory la fonte. In questo modo i file verranno nidificati correttamente nel file zip, senza ulteriori informazioni sulla cartella.

-mem è la forza 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 cliente potrebbe aver bisogno della propria copia di 7-zip (o winzip o altro) per visualizzare il contenuto del file.

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

c'è una versione "riga di comando", che è probabilmente più adatto per questo: http://www.7-zip.org/download.html

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

Così il comando zip sarebbe essere (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 Unzip: (per decomprimere il file appena creato)

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

documentazione qui:

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

+0

Chi ha votato la mia risposta? Che cosa nel mondo? Ho elaborato una soluzione accettata. Geeze Louise. – granadaCoder

+0

La domanda è come decomprimere un file. Stai spiegando come fare l'inverso. – utapyngo

+0

Ho aggiornato per decomprimere. D'oh! (su me). – granadaCoder

1

Copia il codice sottostante per un file batch ed esegui. Sotto è necessario installare WinZip/accessibile dalla macchina. 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 
Problemi correlati