it-swarm-es.com

¿Windows tiene un comando Zip incorporado para la línea de comando?

Como el Explorador de Windows (al menos desde Windows XP) tiene un soporte básico para los archivos Zip, parece que debería haber un equivalente en la línea de comandos, pero parece que no puedo encontrar ningún signo de uno.

¿Windows (XP, Vista, 7, 8, 2003, 2008, 2013) se envía con una herramienta Zip de línea de comandos incorporada, o debo seguir con herramientas de terceros?

119
Electrons_Ahoy

No está integrado en Windows, pero está en Herramientas del kit de recursos como COMPRESS,

C:\>compress /?

Syntax:

COMPRESS [-R] [-D] [-S] [ -Z | -ZX ] Source Destination
COMPRESS -R [-D] [-S] [ -Z | -ZX ] Source [Destination]

Description:
Compresses one or more files.

Parameter List:
-R Rename compressed files.

-D Update compressed files only if out of date.

-S Suppress copyright information.

-ZX LZX compression. This is default compression.

-Z MS-Zip compression.

Source Source file specification. Wildcards may be
used.

Destination Destination file | path specification.
Destination may be a directory. If Source is
multiple files and -r is not specified,
Destination must be a directory.

Ejemplos:

COMPRESS temp.txt compressed.txt
COMPRESS -R *.*
COMPRESS -R *.exe *.dll compressed_dir
56
Bryan

No que yo supiese. En lo que respecta a las herramientas de terceros, 7Zip tiene una interfaz de línea de comandos bastante agradable y el binario se puede distribuir con su aplicación en el directorio de la aplicación, por lo que no tiene que confiar en que se instale con anticipación.

25
Chris
21
John Rennie

.Net 4.5 tiene esta funcionalidad incorporada y PowerShell puede aprovecharla. Deberá estar en Server 2012, Windows 8 o tener .Net 4.5 instalado manualmente.

[Reflection.Assembly]::LoadWithPartialName("System.IO.Compression.FileSystem")
$Compression = [System.IO.Compression.CompressionLevel]::Optimal
$IncludeBaseDirectory = $false

$Source = "C:\Path\To\Source"
$Destination = "C:\CoolPowerShellZipFile.Zip"

[System.IO.Compression.ZipFile]::CreateFromDirectory($Source,$Destination,$Compression,$IncludeBaseDirectory)
14
MDMarra

Otra solución encontrada en el sitio de superusuario usa el objeto com nativo de Windows en el archivo .bat:

¿Puede comprimir un archivo desde el símbolo del sistema utilizando SOLO la capacidad incorporada de Windows para comprimir archivos?

6
Krilivye

Hay un único comando simple de PowerShell para esto. (PowerShell v5.0 +)

Comprimir:

Compress-Archive -LiteralPath 'C:\mypath\testfile.txt' -DestinationPath "C:\mypath\Test.Zip"

Descomprimir:

Expand-Archive -LiteralPath "C:\mypath\Test.Zip" -DestinationPath "C:\mypath" -Force

Fuentes:

Un agradecimiento especial a @Ramhound

0
cowlinator