Як заархівувати (та розпакувати) файли за допомогою PowerShell

Формат файлів ZIP дозволяє зменшити їхній розмір, об’єднуючи кілька файлів в один стиснений архів. Цей метод не тільки заощаджує дисковий простір, але й забезпечує шифрування даних та спрощує обмін файлами з іншими користувачами. Розглянемо, як створювати та розпаковувати ZIP-архіви за допомогою PowerShell.

Створення ZIP-архіву за допомогою PowerShell

Для початку розглянемо процес стиснення файлів у ZIP-архів за допомогою командлета Compress-Archive. Цей командлет приймає шляхи до файлів, які потрібно заархівувати (кілька шляхів розділяються комами), і створює архів у вказаному місці призначення.

Відкрийте PowerShell, знайшовши його через меню “Пуск”, та введіть наступну команду, замінивши <шлях_до_файлів> та <шлях_до_місця_призначення> на відповідні шляхи до файлів, які необхідно стиснути, та ім’я і папку, де буде збережено архів:

Compress-Archive -LiteralPath <шлях_до_файлів> -DestinationPath <шлях_до_місця_призначення>

При вказівці шляху призначення, не забудьте дати ім’я файлу архіву. Якщо не вказати ім’я, PowerShell збереже його як “.zip” у зазначеному місці.

Примітка: Лапки навколо шляху необхідні лише в тому випадку, якщо шлях до файлу містить пробіли.

Для архівування цілого вмісту папки, включно з усіма підпапками, можна скористатись наступною командою, замінивши <шлях_до_папки> і <шлях_до_місця_призначення> відповідними шляхами:

Compress-Archive -LiteralPath <шлях_до_папки> -DestinationPath <шлях_до_місця_призначення>

У наведеному прикладі ми вказали шлях до каталогу з різними файлами і папками, не виділяючи окремі файли. PowerShell автоматично стискає все, що знаходиться в кореневому каталозі, включно з усіма підпапками.

Командлет Compress-Archive також дозволяє використовувати символ підстановки * для розширення функціональності. За допомогою цього символу ви можете виключити кореневий каталог, стиснути лише файли всередині нього, або обрати всі файли певного типу. Для використання підстановки потрібно використовувати параметр -Path, оскільки -LiteralPath їх не підтримує.

Compress-Archive -Path C:шлях_до_файлу* -DestinationPath C:шлях_до_архіву.zip

Раніше ми розглянули, як включити кореневий каталог і всі його вкладення під час створення архіву. Однак, якщо потрібно виключити кореневу папку з архіву, можна скористатися символом підстановки, щоб не включати її. Додавши зірочку * в кінці шляху до файлу, ви вказуєте PowerShell обробити лише вміст кореневого каталогу:

Compress-Archive -Path C:шлях_до_файлу*.jpg -DestinationPath C:шлях_до_архіву.zip

Наприклад, якщо у вас є папка з файлами різних типів (.doc, .txt, .jpg), але потрібно стиснути лише файли певного типу, можна вказати PowerShell архівувати тільки їх, не зачіпаючи інші. Команда в цьому випадку буде виглядати так:

Compress-Archive -Path C:шлях_до_файлу*.* -DestinationPath C:шлях_до_архіву.zip

Примітка: Підкаталоги та файли кореневої папки не включаються в архів за допомогою цього методу.

Якщо вам потрібен архів, який стискає файли лише в кореневому каталозі та в усіх його підкаталогах, необхідно використовувати символ *.* для їхнього архівування. Команда буде виглядати так:

Compress-Archive -Path C:шлях_до_файлів -Update -DestinationPath C:шлях_до_архіву.zip

Оновлення ZIP-архіву

Навіть після створення архіву, ви можете його оновити, використовуючи параметр -Update. Цей параметр дозволяє замінювати старі файли новими версіями з тими ж іменами, а також додавати файли, які були створені в кореневому каталозі. Команда матиме наступний вигляд:

Як розпакувати файли за допомогою PowerShell

Крім створення архівних файлів, PowerShell також надає можливість їх розпакування. Цей процес навіть простіший за стиснення. Все, що потрібно – це вихідний файл та місце призначення для вилучених даних. Відкрийте PowerShell і введіть наступну команду, замінивши <шлях_до_zip_файлу> та <шлях_до_місця_призначення> відповідними шляхами:

Expand-Archive -LiteralPath <шлях_до_zip_файлу> -DestinationPath <шлях_до_місця_призначення>

Вказана папка призначення буде заповнена вмістом архіву. Якщо такої папки не існувало, PowerShell створить її перед розпакуванням.

Якщо не вказати параметр -DestinationPath, PowerShell розпакує вміст у поточний кореневий каталог та створить нову папку з назвою zip-файлу.

Наприклад, якщо ми пропустимо -DestinationPath, PowerShell створить папку «Архів» у шляху «C:Usersbrady» та витягне файли з архіву в цю папку.

Якщо папка вже існує в місці призначення, PowerShell видасть повідомлення про помилку. Однак, ви можете змусити PowerShell перезаписати дані за допомогою параметра -Force.

Увага: Використовуйте параметр -Force лише у випадку, якщо старі файли більше не потрібні, оскільки це безповоротно замінить файли на вашому комп’ютері.