it-swarm-ru.tech

Есть ли в Windows встроенная команда Zip для командной строки?

Поскольку Windows Explorer (хотя бы Windows XP) имеет некоторую базовую поддержку Zip-файлов, похоже, что должен быть эквивалент командной строки, но я не могу найти никаких признаков его наличия.

Windows (XP, Vista, 7, 8, 2003, 2008, 2013) поставляется со встроенным инструментом командной строки Zip, или мне нужно придерживаться сторонних инструментов?

119
Electrons_Ahoy

Он не встроен в Windows, но в Resource Kit Tools как 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.

Примеры:

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

Не то, чтобы я знал. Что касается сторонних инструментов, 7Zip имеет симпатичный интерфейс командной строки, и двоичный файл можно распространять вместе с вашим приложением в каталоге приложения, поэтому вам не нужно полагаться на его установку заранее.

25
Chris
21
John Rennie

.Net 4.5 имеет эту встроенную функциональность и может использоваться PowerShell. Вам нужно быть на Server 2012, Windows 8 или .Net 4.5, установленной вручную.

[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

Другое решение, найденное на сайте суперпользователя, использует объект Windows com в файле .bat:

Можете ли вы сжать файл из командной строки, используя встроенную возможность ТОЛЬКО в Windows для архивирования файлов?

6
Krilivye

Для этого есть одна простая команда PowerShell. (PowerShell v5.0 +)

В Zip:

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

Разархивировать:

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

Источники:

Особая благодарность @Ramhound

0
cowlinator