58 votos

¿Cómo descomprimir un archivo usando el cmd?

Quiero hacer un archivo BAT que comprima o descomprima un archivo. Para comprimir un archivo, he encontrado esta pregunta: ¿Se puede comprimir un archivo desde el símbolo del sistema utilizando SOLO la capacidad incorporada de Windows para comprimir archivos?

Las respuestas dadas allí son excelentes y funcionan para mí, pero no pude encontrar información sobre cómo descomprimir los archivos. Al igual que en el enlace, no puedo asumir el uso de herramientas de terceros (excepto winRAR).

Gracias de antemano y disculpe los errores en inglés

0 votos

stackoverflow.com/a/26843122/4568534 Esta respuesta muestra cómo descomprimir un archivo.

7 votos

Si tienes PowerShell 5 (integrado en Windows 10) entonces podrías usar powershell -command "Expand-Archive C:\foo\bar.zip C:\somewhere"

0 votos

¿Esta respuesta responde a tu pregunta? Crear una carpeta .zip desde la línea de comandos - (Windows)

84voto

venimus Puntos 234

En Windows 10 build 17063 o posterior, puedes usar tar.exe (similar al de *nix). Esto también está disponible en el contenedor docker nanoserver.

C:\> tar -xf archive.zip

Nota: el soporte para zip no está bien documentado.

ref: https://www.freebsd.org/cgi/man.cgi?query=bsdtar&sektion=1&manpath=FreeBSD+5.3-stable

5 votos

Afortunadamente, es bsdtar. Porque .zip no es GZip (-z).

2 votos

Funciona bien con .gz y .zip

3 votos

Sí. Debido a que ignora el argumento incorrecto -z y siempre utiliza la autodetección.

45voto

Doin Puntos 540

Si tienes Windows 10, puedes usar el equivalente mucho más corto de Powershell

Expand-Archive -Force C:\ruta\a\archivo.zip C:\dónde\extraer\a

1 votos

¿Qué pasa con las versiones antiguas de Windows?

1 votos

Solo necesitas Powershell v5.0+

14voto

Rajesh S Puntos 11

Este código de archivo por lotes te ayudará a descomprimir un archivo.

@echo off
setlocal
cd /d %~dp0
Call :UnZipFile "C:\Temp\" "c:\FolderName\batch.zip"
exit /b

:UnZipFile  
set vbs="%temp%\_.vbs"
if exist %vbs% del /f /q %vbs%
>%vbs%  echo Set fso = CreateObject("Scripting.FileSystemObject")
>>%vbs% echo If NOT fso.FolderExists(%1) Then
>>%vbs% echo fso.CreateFolder(%1)
>>%vbs% echo End If
>>%vbs% echo set objShell = CreateObject("Shell.Application")
>>%vbs% echo set FilesInZip=objShell.NameSpace(%2).items
>>%vbs% echo objShell.NameSpace(%1).CopyHere(FilesInZip)
>>%vbs% echo Set fso = Nothing
>>%vbs% echo Set objShell = Nothing
cscript //nologo %vbs%
if exist %vbs% del /f /q %vbs%

N.B. C:\Temp es la carpeta donde se almacena el archivo extraído (UnZip).

Y, c:\FolderName\batch.zip es la ruta de origen (donde se almacenan los archivos Zip).

Por favor, cambia la ruta completa del archivo (unidad, carpeta y nombre del archivo Zip) según tus necesidades.

9voto

np8 Puntos 121

Si tienes Windows 10 (y PowerShell), pero aún quieres descomprimir desde un archivo .bat/.cmd (cmd.exe), puedes usar

powershell -command "Expand-Archive -Force '%~dp0my_zip_file.zip' '%~dp0'"

donde my_zip_file.zip es el archivo que se va a descomprimir y %~dp0 apunta a la misma carpeta donde se encuentra el archivo .bat/.cmd (Cambia la carpeta si es necesario).

0 votos

Tengo dos problemas con esto. hacer aparecer un powershell lleva un tiempo prohibitivamente largo (unos 20 segundos en mi prueba), y ni siquiera puede extraer un archivo zip con otra extensión.

0 votos

No hay PowerShell en algunos contenedores de nano, por ejemplo. No es una respuesta valiosa...

3voto

spoorthi vaidya Puntos 21
ZipFile="C:\Users\spvaidya\Music\folder.zip"
ExtractTo="C:\Users\spvaidya\Music\"

'If the extraction location does not exist create it.

Set fso = CreateObject("Scripting.FileSystemObject")

If NOT fso.FolderExists(ExtractTo) Then

 fso.CreateFolder(ExtractTo)

End If

'Extract the contants of the zip file.

set objShell = CreateObject("Shell.Application")

set FilesInZip=objShell.NameSpace(ZipFile).items

objShell.NameSpace(ExtractTo).CopyHere(FilesInZip)

Set fso = Nothing
Set objShell = Nothing

El siguiente script en vbscript se puede guardar como file.vbs y luego se puede ejecutar usando un script por lotes como:

file.vbs

Guardar esto en un archivo .bat y ejecutarlo.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X