Формат файла ZIP уменьшает размер файлов, сжимая их в один файл. Этот процесс экономит дисковое пространство, шифрует данные и позволяет легко обмениваться файлами с другими. Вот как можно сжать и разархивировать файлы с помощью PowerShell.

Как архивировать файлы с помощью PowerShell
Начнем с сжатия некоторых файлов в ZIP-архив с помощью командлета Compress-Archive
. Он берет путь к любым файлам, которые вы хотите сжать - несколько файлов разделяются запятой - и архивирует их в указанном месте назначения.
Сначала откройте PowerShell, выполнив поиск в меню «Пуск», а затем введите следующую команду, заменив PathToFiles
и PathToDestination
на путь к файлам, которые вы хотите сжать, а также на имя и папку, в которую вы хотите перейти, соответственно:
Compress-Archive -LiteralPath <PathToFiles> -DestinationPath <PathToDestination>

Когда вы указываете путь назначения, обязательно укажите имя файла архива, иначе PowerShell сохранит его как .zip
.
Примечание. Кавычки вокруг пути необходимы только в том случае, если путь к файлу содержит пробел.
В качестве альтернативы, чтобы сжать все содержимое папки и все ее подпапки, вы можете использовать следующую команду, заменив PathToFolder
и PathToDestination
на путь к файлам, которые вы хотите сжать, а также на имя и папку, которую вы хотите. чтобы перейти соответственно:
Compress-Archive -LiteralPath <PathToFolder> -DestinationPath <PathToDestination>

В предыдущем примере мы указали путь к каталогу с несколькими файлами и папками без указания отдельных файлов. PowerShell берет все внутри корневого каталога и сжимает его, а также все подпапки.
Командлет Compress-Archive
позволяет использовать подстановочный знак (*) для дальнейшего расширения функциональности. При использовании символа вы можете исключить корневой каталог, сжать только файлы в каталоге или выбрать все файлы определенного типа. Чтобы использовать подстановочный знак с Compress-Archive
, вы должны использовать вместо этого параметр -Path
, так как -LiteralPath
не принимает их.
Выше мы рассмотрели, как включить корневой каталог и все его файлы и подкаталоги при создании архивного файла. Однако, если вы хотите исключить корневую папку из Zip-файла, вы можете использовать подстановочный знак, чтобы исключить ее из архива. Добавляя звездочку (*) в конец пути к файлу, вы указываете PowerShell только захватить то, что находится внутри корневого каталога. Это должно выглядеть примерно так:
Compress-Archive -Path C:path ofile* -DestinationPath C:path oarchive.zip

Далее, скажем, у вас есть папка с кучей файлов разных типов (.doc, .txt, .jpg и так далее), Но вы хотите сжать только один тип. Вы можете указать PowerShell архивировать их, не затрагивая явно. Обозначение команды будет выглядеть так:
Compress-Archive -Path C:path ofile*.jpg -DestinationPath C:path oarchive.zip

Примечание. Подкаталоги и файлы корневой папки не включаются в архив этим методом.
Наконец, если вам нужен архив, который сжимает файлы только в корневом каталоге и во всех его подкаталогах, вы должны использовать подстановочный знак «звезда-точка-звезда» (*. *) Для их сжатия. Это будет выглядеть примерно так:
Compress-Archive -Path C:path ofile*.* -DestinationPath C:path oarchive.zip

Примечание. Подкаталоги и файлы корневой папки не включаются в архив этим методом.
Даже после завершения архивирования вы можете обновить существующий заархивированный файл с помощью параметра -Update
. Это позволяет заменять старые версии файлов в архиве новыми версиями с такими же именами и добавлять файлы, созданные в корневом каталоге. Это будет выглядеть примерно так:
Compress-Archive -Path C:path ofiles -Update -DestinationPath C:path oarchive.zip

Как распаковать файлы с помощью PowerShell
Помимо возможности архивировать файлы и папки, PowerShell имеет возможность разархивировать архивы. Процесс даже проще, чем их сжатие; все, что вам нужно, это исходный файл и место для данных, готовых к распаковке.
Откройте PowerShell и введите следующую команду, заменив PathToZipFile
и PathToDestination
на путь к файлам, которые вы хотите сжать, а также на имя и папку, в которую вы хотите перейти, соответственно:
Expand-Archive -LiteralPath <PathToZipFile> -DestinationPath <PathToDestination>

Папка назначения, указанная для извлечения файлов, будет заполнена содержимым архива. Если папка не существовала до разархивирования, PowerShell создаст папку и поместит содержимое в нее перед разархивированием.
По умолчанию, если вы пропустите параметр -DestinationPath
, PowerShell разархивирует содержимое в текущий корневой каталог и использует имя файла Zip для создания новой папки.
В предыдущем примере, если мы опускаем -DestinationPath
, PowerShell создаст папку «Архив» по пути C:Usersuser
и извлечет файлы из архива в папку.

Если папка уже существует в месте назначения, PowerShell выдаст ошибку при попытке разархивировать файлы. Однако вы можете заставить PowerShell перезаписывать данные новыми, используя параметр -Force
.
Вы должны использовать параметр -Force
только в том случае, если старые файлы больше не нужны, поскольку это необратимо заменит файлы на вашем компьютере.