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

Как заархивировать файлы с помощью PowerShell

Начнем с сжатия некоторых файлов в ZIP-архив с помощью командлета Compress-Archive. Он берет путь к любым файлам, которые вы хотите сжать (несколько файлов разделяются запятой), и архивирует их в указанном вами месте назначения.

Сначала откройте PowerShell, выполнив поиск в меню «Пуск», а затем введите следующую команду, заменив и с путем к файлам, которые вы хотите сжать, а также с именем и папкой, в которую они должны быть помещены, соответственно:

Compress-Archive -LiteralPath  -DestinationPath 

Заархивируйте несколько файлов в PowerShell.

Когда вы указываете путь назначения, обязательно дайте архивному файлу имя, иначе PowerShell сохранит его как «.zip», где вы укажете.

Примечание. Цитаты вокруг пути необходимы только в том случае, если путь к файлу содержит пробел.

Кроме того, чтобы заархивировать все содержимое папки — и все ее подпапки — вы можете использовать следующую команду, заменив и с путем к файлам, которые вы хотите сжать, а также с именем и папкой, в которую вы хотите перейти, соответственно:

Compress-Archive -LiteralPath  -DestinationPath 

Заархивируйте всю папку и все ее содержимое.

В предыдущем примере мы указали путь к каталогу с несколькими файлами и папками, не указывая отдельные файлы. PowerShell берет все, что находится внутри корневого каталога, и сжимает его, подпапки и все остальное.

Командлет Compress-Archive позволяет использовать подстановочный знак.

чтобы еще больше расширить функциональность. Когда вы используете символ, вы можете исключить корневой каталог, сжать только файлы в каталоге или выбрать все файлы определенного типа. Чтобы использовать подстановочный знак с Compress-Archive, вы должны вместо этого использовать параметр -Path, поскольку -LiteralPath их не принимает.

Compress-Archive -Path C:pathtofile* -DestinationPath C:pathtoarchive.zip

Выше мы рассмотрели, как включить корневой каталог и все его файлы и подкаталоги при создании файла архива.  Однако, если вы хотите исключить корневую папку из Zip-файла, вы можете использовать подстановочный знак, чтобы исключить ее из архива.  Добавив звездочку

в конец пути к файлу, вы указываете PowerShell только захват содержимого корневого каталога. Это должно выглядеть примерно так:

Compress-Archive -Path C:pathtofile*.jpg -DestinationPath C:pathtoarchive.zip

Заархивируйте все содержимое папки без самой корневой папки.

Затем предположим, что у вас есть папка с кучей файлов разных типов (.doc, .txt, .jpg и т. Д.), Но вы хотите сжать все файлы одного типа. Вы можете указать PowerShell заархивировать их, не касаясь других явно. Обозначение команды будет выглядеть так:

Заархивируйте из папки только файлы определенных типов.

Compress-Archive -Path C:pathtofile*.* -DestinationPath C:pathtoarchive.zip

Примечание. Подкаталоги и файлы корневой папки не включаются в архив этим методом.

Наконец, если вам нужен архив, который сжимает файлы только в корневом каталоге — и во всех его подкаталогах — вы должны использовать подстановочный знак звездочка-точка-звезда (*. *), Чтобы заархивировать их. Это выглядело бы примерно так:

Заархивируйте только файлы из корневой папки с помощью widlcard star-dot-star (*. *).

Compress-Archive -Path C:pathtofiles -Update -DestinationPath C:pathtoarchive.zip

Примечание. Подкаталоги и файлы корневой папки не включаются в архив этим методом.

Даже после завершения архивации вы можете обновить существующий заархивированный файл с помощью параметра -Update. Он позволяет заменять старые версии файлов в архиве новыми с такими же именами и добавлять файлы, созданные в корневом каталоге. Это будет выглядеть примерно так:

Обновите уже существующий zip-файл с помощью параметра -Update.

Как разархивировать файлы с помощью PowerShell Помимо возможности архивирования файлов и папок, PowerShell может распаковывать архивы. Это даже проще, чем их сжать; все, что вам нужно, это исходный файл и место назначения для данных, готовых к распаковке. Откройте PowerShell и введите следующую команду, заменив

Expand-Archive -LiteralPath  -DestinationPath 

и

с путем к файлам, которые вы хотите сжать, а также с именем и папкой, в которую вы хотите перейти, соответственно:

Распакуйте архив с помощью командлета Expand-Archive.

Папка назначения, указанная для извлечения файлов, будет заполнена содержимым архива. Если папка не существовала до распаковки, PowerShell создаст папку и поместит в нее содержимое перед распаковкой.

По умолчанию, если вы не укажете параметр -DestinationPath, PowerShell распакует содержимое в текущий корневой каталог и будет использовать имя Zip-файла для создания новой папки.

В предыдущем примере, если мы оставим -DestinationPath, PowerShell создаст папку «Archive» по пути «C: Usersbrady» и извлечет файлы из архива в папку.

Если вы не укажете параметр -DestinationPath, PowerShell извлечет zip-архив в текущий выбранный каталог.

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

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