Pregunta

¿Puedo descomprimir archivos a través de la línea de comando? Preferiblemente utilizando herramientas de código abierto / gratuitas.

Otros consejos

Si ya tiene Java en su PC, y el directorio bin está en su ruta (en la mayoría de los casos), puede usar la línea de comando:

jar xf test.zip

o si no está en su camino:

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

Conjunto completo de opciones para la herramienta jar disponible aquí .

Ejemplos:

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

En primer lugar, escriba una utilidad de descompresión utilizando vbscript para activar la funcionalidad de descompresión nativa en Windows. Luego, canalice el script desde su archivo por lotes y luego llámelo. Entonces es tan bueno como estar solo. Lo he hecho en el pasado para numerosas tareas. De esta manera, no requiere la necesidad de aplicaciones de terceros, solo el archivo por lotes que hace todo.

Puse un ejemplo en mi blog sobre cómo descomprimir un archivo usando un archivo por lotes :

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

Úselo así:

cscript //B j_unzip.vbs zip_file_name_goes_here.zip

7-Zip , es de código abierto, gratuito y admite una amplia gama de formatos .

7z.exe x myarchive.zip

Como otros han aludido, 7-zip es genial.

Nota: voy a comprimir y luego descomprimir un archivo. Descomprimir está en la parte inferior.

Mi contribución:

Obtenga el

Versión de línea de comando 7-Zip

URL actual

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

¿La sintaxis?

Puede poner lo siguiente en un archivo .bat

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

He mostrado algunas opciones.

-r es recursivo. Por lo general, lo que quieres con la funcionalidad zip.

a es para " archivo " ;. Ese es el nombre del archivo zip de salida.

-p es para una contraseña (opcional)

-w es el directorio fuente. Esto anidará sus archivos correctamente en el archivo zip, sin información adicional de la carpeta.

-mem es la fuerza de cifrado.

Hay otros. Pero lo anterior lo hará correr.

NOTA: Agregar una contraseña hará que el archivo zip sea hostil cuando se trata de ver el archivo a través del Explorador de Windows. El cliente puede necesitar su propia copia de 7-zip (o winzip u otro) para ver el contenido del archivo.

EDITAR ::::::::::: :( solo cosas adicionales).

Hay una línea de comando " versión que probablemente sea más adecuada para esto: http://www.7-zip.org/download.html

(enlace directo actual (al momento de la escritura)) http://sourceforge.net/projects/sevenzip/files /7-Zip/9.20/7za920.zip/download

Entonces, el comando zip sería (con la versión de línea de comando de la herramienta zip 7).

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

Ahora la porción de descompresión : (para descomprimir el archivo que acaba de crear)

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

Documentación aquí:

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

Gracias Rich, tomaré nota de eso. Así que aquí está el script para mi propia solución. No requiere herramientas de descompresión de terceros.

Incluya la secuencia de comandos a continuación al comienzo del archivo por lotes para crear la función, y luego para llamar a la función, el comando es ... cscript / B j_unzip.vbs zip_file_name_goes_here.zip

Aquí está el script para agregar a la parte superior ...

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.

Hay un artículo sobre cómo acceder al manejo de archivos .ZIP de Windows incorporado con VBscript aquí:

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

(El último código publicitario trata sobre la extracción)

Tome un ejecutable de info-zip .

  

Info-ZIP admite hardware desde microcomputadoras hasta supercomputadoras Cray, ejecutándose en casi todas las versiones de Unix, VMS, OS / 2, Windows 9x / NT / etc. (también conocido como Win32), Windows 3.x, Windows CE, MS-DOS, AmigaDOS, Atari TOS, Acorn RISC OS, BeOS, Mac OS, SMS / QDOS, MVS y OS / 390 OE, VM / CMS, FlexOS, Tandem NSK y Human68K (japonés). También hay soporte (antiguo) para LynxOS, TOPS-20, AOS / VS y Novell NLM. Las bibliotecas compartidas (DLL) están disponibles para Unix, OS / 2, Win32 y Win16, y las interfaces gráficas están disponibles para Win32, Win16, WinCE y Mac OS.

Originalmente, los archivos ZIP se crearon con el software de línea de comandos MS-DOS de PKWare, los dos programas fueron PKZIP.EXE y PKUNZIP.EXE. Creo que todavía puede descargar PKUNZIP en el sitio PKWare aquí:

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

La línea de comando real podría verse así:

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

Copie el siguiente código en un archivo por lotes y ejecútelo. A continuación se requiere que Winzip esté instalado / accesible desde su máquina. Cambie las variables según su necesidad.

@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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top