¿Cómo descomprimir un archivo usando la línea de comando? [cerrado]


164

¿Qué comandos se pueden usar a través de la línea de comandos para descomprimir un archivo?
Preferiblemente algo integrado en Windows o herramientas de código abierto / gratuitas.


1
Una búsqueda rápida en Google arrojó esto . Eso funciona en Windows (no está claro si quiere decir que está utilizando Windows o si el sistema operativo es en realidad DOS).
Jeremy

26
A menos que esté ejecutando una versión muy antigua de Windows (ME o anterior), la línea de comando de Windows no es DOS. :)
Tyler McHenry

La forma más fácil de descomprimir un archivo es usar unzip.exe. Ejemplo: unzip.exe source.zip -d target_dir. URL: stahlworks.com/dev/index.php?tool=zipunzip
zappee

2
Windows con Powershell5 puede hacer eso de forma nativa con Exand-Archivey Compress-Archive. Honor donde se debe honor.
LosManos

1
descomprimir [nombre de archivo] .zip
Amranur Rahman

Respuestas:


53

11
La primera URL enumerada es una verdadera aplicación de 16 bits, por lo que no funciona en sistemas operativos x64. Solo un aviso.
Mark Henderson el

38
si estás en Windows 7 o 10 con powershell puedes usar:powershell.exe -NoP -NonI -Command "Expand-Archive '.\file.zip' '.\unziped\'"
AK_

@AK_ ¿qué pasa con Windows 8 u 8.1?
Frank Vu

2
@AK_ deberías hacer que sea su propia respuesta.
BrainStone

221

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 tu 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]

37
Una pista. Necesita el JDK, y no solo el JRE si desea usar jar.
Qben

1
es extraño, m jar en realidad resuelve el problema parcialmente, porque es capaz de enumerar los archivos dentro del archivo y extraer los archivos especificados, sin embargo, no es posible extraer todos los archivos al mismo tiempo ... bastante extraño
mikus

@mikus: por qué no, solo usa el comando <code> jar.exe xvf Compressed.zip </code>
Xinus

1
java.io.FileNotFoundException: test.zip (El sistema no puede encontrar el archivo especificado)
markj

¿Hay alguna manera de especificar una carpeta de destino? (como cuando elige la opción extraer a)
Leonardo Alves Machado el

41

En primer lugar, escriba una utilidad de descompresión usando 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 forma, no requiere la necesidad de aplicaciones de terceros, solo el archivo por lotes que hace todo.

Pongo 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

3
En general, se considera bueno poner código en su respuesta, y en general es malo vincularlo para obtener un código, ¡solo un aviso!
Rich Bradshaw

39

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

7z.exe x myarchive.zip

1
si ya existe el contenido extraído y desea anular el contenido existente sin que se le solicite, utilice "7z.exe x -y myarchive.zip"
Suketu Bhuta

22

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:

Consigue 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 te hará correr.

NOTA: Agregar una contraseña hará que el archivo zip sea poco amigable 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 versión de "línea de comando" que probablemente sea más adecuada para esto: http://www.7-zip.org/download.html

(enlace directo actual (al momento de escribir)) 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 parte 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

Como alternativa al argumento "e", hay un argumento ax.

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

Documentación aquí:

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


11

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 Cambiar la carpeta de trabajo al directorio actual para compatibilidad con Vista y 7
% ~ d0
CD% ~ dp0
La carpeta REM ha cambiado

REM Los archivos de este script upzip ...

    > j_unzip.vbs ECHO '
    >> j_unzip.vbs ECHO 'Descomprime un script de archivo
    >> j_unzip.vbs ECHO '
    >> j_unzip.vbs ECHO '¡Es un desastre, lo sé!
    >> j_unzip.vbs ECHO '
    >> j_unzip.vbs ECHO.
    >> j_unzip.vbs ECHO 'Dim ArgObj, var1, var2
    >> j_unzip.vbs ECHO Set ArgObj = WScript.Argumentos
    >> j_unzip.vbs ECHO.
    >> j_unzip.vbs ECHO If (Wscript.Arguments.Count ^> 0) Entonces
    >> j_unzip.vbs ECHO. var1 = ArgObj (0)
    >> j_unzip.vbs ECHO Else
    >> j_unzip.vbs ECHO. var1 = ""
    >> j_unzip.vbs ECHO Finalizar si
    >> j_unzip.vbs ECHO.
    >> j_unzip.vbs ECHO If var1 = "" entonces
    >> j_unzip.vbs ECHO. strFileZIP = "ejemplo.zip"
    >> j_unzip.vbs ECHO Else
    >> j_unzip.vbs ECHO. strFileZIP = var1
    >> j_unzip.vbs ECHO Finalizar si
    >> j_unzip.vbs ECHO.
    >> j_unzip.vbs ECHO 'La ubicación del archivo zip.
    >> j_unzip.vbs ECHO REM Establecer 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 carpeta a la que se debe extraer el contenido.
    >> j_unzip.vbs ECHO outFolder = sCurPath ^ & "\"
    >> j_unzip.vbs ECHO.
    >> j_unzip.vbs ECHO. WScript.Echo ("Extrayendo archivo" ^ & strFileZIP)
    >> j_unzip.vbs ECHO.
    >> j_unzip.vbs ECHO Set objShell = CreateObject ("Shell.Application")
    >> j_unzip.vbs ECHO Establecer 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 ("Extraído")
    >> j_unzip.vbs ECHO.

2
hermoso :) Lo uso para descargar la línea de comando 7zip (cuyo ejecutable está comprimido (qué extraño))
Sebastian

Esto funciona como se esperaba, ahora puedo comprimir cualquier carpeta y hacer exe usando iexpress y descomprimir usando esto. ¿Funciona esto también en Windows 10?
Kiran Kumar


5

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\

1
Eso es viejo escuela!
granadaCoder

3

Toma 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.


1

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.