Domanda

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

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top