En Windows puedes comprimir algunos archivos por
clic derecho → Enviar a → Carpeta comprimida (comprimida)
Y descomprimir haciendo doble clic en el .zip
archivo y extraer los archivos.
¿Hay alguna manera de aplicar esas habilidades desde un script (archivo .bat) sin la necesidad de instalar ningún software de terceros ?
windows
batch-file
zip
Roee Gavirel
fuente
fuente
Respuestas:
En 2013, eso no era posible. Microsoft no proporcionó ningún ejecutable para esto.
Vea este enlace para ver alguna forma de VBS de hacer esto. /superuser/201371/create-zip-folder-from-the-command-line-windows
Desde Windows 8 en adelante, .NET Framework 4.5 está instalado de manera predeterminada, con System.IO.Compression.ZipArchive y PowerShell disponibles, uno puede escribir scripts para lograr esto, consulte https://stackoverflow.com/a/26843122/71312
fuente
Para ampliar la solución PowerShell de Steven Penny, puede incorporarla a un archivo por lotes llamando a powershell.exe de esta manera:
Como dijo Ivan Shilo, esto no funcionará con PowerShell 2, requiere PowerShell 3 o superior y .NET Framework 4.
fuente
'.'
, por ejemplo:powershell.exe -nologo -noprofile -command "& { Add-Type -A 'System.IO.Compression.FileSystem'; [IO.Compression.ZipFile]::ExtractToDirectory('foo.zip', '.'); }"
& {}
? Con PS5 esto también funciona:powershell.exe -nologo -noprofile -command "Add-Type -A 'System.IO.Compression.FileSystem'; [IO.Compression.ZipFile]::ExtractToDirectory('foo.zip', '.');"
A partir de .NET 4.5 , PowerShell puede hacer esto:
Para las dos últimas líneas,
bar
yfoo
se puede reemplazar con el nombre que desea que tenga la carpeta, o cualquiera que sea el nombre de la carpeta preexistente.foo.zip
en ambos casos actúa como archivo zip para guardar como o descomprimir.fuente
Si tiene Java instalado, puede comprimir a un archivo ZIP utilizando el
jar
comando:fuente
PowerShell 5.0
Desde
Microsoft.PowerShell.Archive
usted puede usar:Compress-Archive
Expand-Archive
P.ej:
Crear
result.zip
desde toda laTest
carpeta:Extrae el contenido de
result.zip
en laTest
carpeta especificada :fuente
powershell Compress-Archive -Path C:\SomeFile.ext -DestinationPath C:\SomeFile.zip
directamente desde la línea de comandos sin necesidad de crear un script (suponiendo que tenga instalado Powershell v5, lo que puede hacer al menos volviendo a Windows 7).No es exactamente un ZIP, pero la única forma de comprimir un archivo usando las herramientas de Windows es:
Para descomprimir:
Ejemplo avanzado (de ss64.com):
Más información: makecab , expand , usos avanzados de makecab
fuente
Usando 7-Zip:
Zip : tiene una carpeta
foo
y desea comprimirla enmyzip.zip
Descomprimir : desea descomprimirlo (
myzip.zip
) en el directorio actual (./
)fuente
without the need to install any 3rd party
He estado buscando responder esta pregunta exacta y, según mi investigación, la respuesta de DiryBoy parece ser precisa.
Encontré que el programa compact.exe comprime archivos pero no para crear un archivo altamente comprimido (o conjunto de archivos). Es similar a la opción que obtienes al hacer clic derecho en una letra de unidad o partición en Windows. Tienes la opción de hacer la limpieza (eliminar archivos temporales, etc.) así como comprimir archivos. Aún se puede acceder a los archivos comprimidos, pero solo se comprimen para crear espacio en una unidad con poco espacio.
También encontré compress.exe que tenía en mi computadora. No es nativo en la mayoría de las máquinas con Windows y es parte del kit de recursos de 2003. Realmente crea un tipo de archivo comprimido, pero es realmente más similar a los archivos de un disco de configuración de Windows (tiene el guión bajo como último carácter de la extensión o nombre del archivo). Y el comando extract.exe extrae esos archivos.
Sin embargo, el mantra es que si se puede hacer de forma nativa a través de la GUI, entonces es probable que haya una forma de hacerlo por lotes, .vbs o algún otro tipo de script dentro de la línea de comandos. Como Windows ha tenido la opción 'enviar a' para crear un archivo zip, sabía que tenía que haber una manera de hacerlo a través de la línea de comandos y encontré algunas opciones.
Aquí hay un excelente enlace que muestra cómo comprimir un archivo usando los comandos nativos de Windows.
/superuser/110991/can-you-zip-a-file-from-the-command-prompt-using-only-windows-built-in-capabili
Lo probé con un directorio que contenía múltiples archivos y carpetas anidados y funcionó perfectamente. Simplemente siga el formato de la línea de comando.
También hay una manera de descomprimir los archivos a través de la línea de comandos que encontré también. Una forma, solo abre una ventana del explorador que muestra cuál es el contenido del archivo comprimido. Algunos de estos también usan Java, que no es necesariamente nativo de Windows, pero es tan común que casi lo parece.
/superuser/149489/does-windows-7-have-unzip-at-the-command-line-installed-by-default
¿Cómo descomprimir un archivo usando la línea de comando?
fuente
Puede usar un script VBScript envuelto en un archivo BAT. Este código funciona en una RUTA relativa.
No hay necesidad de herramientas o dependencias de terceros. Solo establece
SOURCEDIR
yOUTPUTZIP
.Nombre de archivo: ZipUp.bat
Ejemplo de uso
Alternativamente, puede parametrizar este archivo reemplazando la línea
CScript _zipup.vbs %SOURCEDIR% %OUTPUTZIP%
conCScript _zipup.vbs %1 %2
, en cuyo caso se puede llamar aún más fácilmente simplemente llamandoCALL ZipUp C:\Source\Dir C:\Archive.zip
.fuente
Tengo un problema con todas estas soluciones.
No son exactamente lo mismo, y todos crean archivos que tienen una ligera diferencia de tamaño en comparación con
RMB --> send to --> compressed (zipped) folder
cuando se crean desde la misma carpeta de origen. La diferencia de tamaño más cercana que he tenido es de 300 KB de diferencia (script> manual), hecha con:(Observe el nivel de compresión . Hay tres valores posibles : Más rápido, Sin compresión y Óptimo, (Valor predeterminado: Óptimo))
Quería hacer un archivo .bat que comprima automáticamente una carpeta de plugin de WordPress en la que estoy trabajando, en un archivo .zip, para poder cargarlo en el sitio de WordPress y probar el plugin.
Pero por alguna razón no funciona con ninguna de estas compresiones automáticas, pero sí funciona con la compresión RMB manual, lo que me parece realmente extraño.
Y los archivos .zip generados por script realmente rompen los complementos de WordPress hasta el punto en que no se pueden activar, y tampoco se pueden eliminar desde dentro de WordPress. Tengo que SSH en la "parte posterior" del servidor y eliminar los archivos de complemento cargados ellos mismos, manualmente. Mientras que los archivos generados manualmente RMB funcionan normalmente.
fuente
Si necesita hacer esto como parte de un script, la mejor manera es usar Java. Suponiendo que el directorio bin está en su ruta (en la mayoría de los casos), puede usar la línea de comando:
Si Java no está en su camino, haga referencia directamente:
fuente
El código abierto es tu amigo :-)
Aquí está el descomprimir : http://gnuwin32.sourceforge.net/packages/unzip.htm
También hay un comando ZIP: http://gnuwin32.sourceforge.net/packages/zip.htm
La descarga de los binarios es suficiente.
fuente
Esta es una versión actualizada de la respuesta proporcionada por @ PodTech.io
Esta versión tiene todo el código vbs escapado correctamente en el archivo por lotes. También se crea en una subrutina, que se puede llamar con una sola línea desde cualquier parte de su script por lotes:
fuente
Dices que estás tratando de hacer esto sin un software de terceros. No estoy seguro si consideraría el software .NET de "terceros".
Pero puede crear su propia utilidad de línea de comandos en .NET. No debería requerir más que unas pocas líneas de código.
Clase ZipFile
fuente
Agregando la respuesta de @Jason Duffett y sus comentarios, aquí hay un script que obtiene entrada y salida (nombre de archivo y nombre de directorio, respectivamente) del usuario:
Uso:
fuente
Para comprimir un archivo:
fuente
Puede descomprimir un archivo comprimido de Windows comprimido o nativo utilizando el comando Expandir , p. Ej.
fuente
Expand file.zip file
simplemente copia el zip a otro archivo sin la extensión. No descomprime el ZIP en una carpeta.