sviluppo-web-qa.it

Windows ha un comando Zip incorporato per la riga di comando?

Poiché Windows Explorer (almeno da Windows XP) ha un supporto di base per i file Zip, sembra che ci dovrebbe essere un equivalente della riga di comando, ma non riesco a trovare alcun segno di uno.

Windows (XP, Vista, 7, 8, 2003, 2008, 2013) viene fornito con uno strumento Zip da riga di comando integrato o devo utilizzare strumenti di terze parti?

119
Electrons_Ahoy

Non è integrato in Windows, ma è in Resource Kit Tools as 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.

Esempi:

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

Non che ne sia consapevole. Per quanto riguarda gli strumenti di terze parti, 7Zip ha un'interfaccia a riga di comando piuttosto piacevole e il file binario può essere distribuito con la tua app nella directory dell'app, quindi non devi fare affidamento sul fatto che sia installato in anticipo.

25
Chris
21
John Rennie

.Net 4.5 ha questa funzionalità integrata e può essere sfruttata da PowerShell. Dovrai essere su Server 2012, Windows 8 o avere .Net 4.5 installato 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

Un'altra soluzione trovata sul sito superutente utilizza l'oggetto com nativo di Windows nel file .bat:

È possibile comprimere un file dal comando Prompt utilizzando SOLO la funzionalità integrata di Windows nei file Zip?

6
Krilivye

Esiste un unico, semplice comando PowerShell per questo. (PowerShell v5.0 +)

Comprimere:

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

Per decomprimere:

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

Fonti:

Un ringraziamento speciale a @Ramhound

0
cowlinator