Come decomprimere un file usando la riga di comando? [chiuso]
Domanda
Posso decomprimere i file tramite la riga di comando? Preferibilmente usando strumenti open source / gratuiti.
Soluzione
Puoi usare:
http://membrane.com/synapse/library/pkunzip.html
o
7zip: http://www.7-zip.org/download.html
Byte gratuito zip: http://www.freebyte.com/fbzip/
o infozip: http://infozip.sourceforge.net/
Altri suggerimenti
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]
In primo luogo, 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 il 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
7-Zip , è open source, gratuito e supporta una vasta gamma di formati .
7z.exe x myarchive.zip
Come altri hanno accennato, 7-zip è fantastico.
Nota: ho intenzione di comprimere e quindi decomprimere un file. Unzip è in fondo.
Il mio contributo:
Ottieni
Versione a riga di comando a 7 zip
URL corrente
http://www.7-zip.org/download.html
La sintassi?
Puoi 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 è 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 riga di comando " " versione che probabilmente è più adatta a questo: http://www.7-zip.org/download.html
(collegamento diretto (al momento della scrittura) corrente) 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 decomprimi porzione : (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
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 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.
C'è un articolo su come arrivare alla gestione dei file .ZIP di Windows integrata con VBscript qui:
https: //www.aspfree. com / c / a / Windows-Scripting / compressa-Folders-in-WSH /
(L'ultimo codice blurb si occupa dell'estrazione)
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. Sono disponibili librerie condivise (DLL) per Unix, OS / 2, Win32 e Win16 e sono disponibili interfacce grafiche per Win32, Win16, WinCE e Mac OS.
Originariamente 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 assomigliare a questa:
C:\>pkunzip c:\myzipfile.zip c:\extracttothisfolder\
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