Jak spakować pliki do ZIP w PowerShell i je rozpakować

Oskar Gajzler
Przez
Oskar Gajzler
Redaktor IINTE.edu.pl, na co dzień zajmuje się technologiami internetowymi i tłumaczeniem skomplikowanych tematów na prosty język. Pisze poradniki o tym, jak załatwiać sprawy przez internet, jak...
9 min czytania

W PowerShellu pliki do formatu ZIP pakuje się głównie poleceniem Compress-Archive, a rozpakowuje poleceniem Expand-Archive. Oba cmdlety są dostępne natywnie w Windows 10/11 (PowerShell 5+), więc nie trzeba instalować dodatkowego oprogramowania.

1. Wymagania wstępne – co jest potrzebne?

Przed rozpoczęciem pracy upewnij się, że spełniasz te warunki:

  • system Windows 10 lub nowszy (lub Windows 7/8 z zainstalowanym PowerShellem 5.1),
  • dostęp do PowerShell (domyślnie dostępny z menu Start),
  • podstawowa znajomość ścieżek do plików i folderów (np. C:\Dane\Raporty).

Jak uruchomić PowerShell

Wykonaj te kroki, aby szybko uruchomić konsolę:

  1. Kliknij przycisk Start.
  2. Wpisz PowerShell w wyszukiwarkę.
  3. Kliknij prawym przyciskiem Windows PowerShell lub PowerShell i wybierz pozycję z menu.

Jeśli operujesz na katalogach systemowych lub sieciowych, wybierz „Uruchom jako administrator”.

2. Podstawy: pakowanie całego folderu do ZIP (Compress-Archive)

Do tworzenia archiwów ZIP służy cmdlet Compress-Archive. Oto składnia, z której najczęściej skorzystasz:

Compress-Archive -Path <ścieżka_źródłowa> -DestinationPath <ścieżka_docelowa_do_zip>

-Path wskazuje folder lub pliki do spakowania, a -DestinationPath to pełna ścieżka docelowa łącznie z nazwą i rozszerzeniem .zip.

Przykład – pakowanie całego folderu

Załóżmy, że masz folder C:\Projekty\Raport2026 i chcesz utworzyć archiwum ZIP w C:\Backup o nazwie Raport2026.zip. Użyj następującego polecenia:

Compress-Archive -Path C:\Projekty\Raport2026\ -DestinationPath C:\Backup\Raport2026.zip

Spakowane zostanie wszystko, co znajduje się wewnątrz folderu Raport2026, a wynik zapisze się jako C:\Backup\Raport2026.zip.

3. Pakowanie tylko zawartości folderu (bez samego katalogu)

Czasem chcesz mieć w archiwum od razu pliki i podfoldery, bez dodatkowego poziomu katalogu nadrzędnego. W takiej sytuacji użyj symbolu wieloznacznego:

Compress-Archive -Path C:\Projekty\Raport2026\* -DestinationPath C:\Backup\Raport2026-zawartosc.zip

Gwiazdka (*) oznacza: spakuj zawartość tego folderu, ale bez niego samego. Dzięki temu w ZIP-ie natychmiast zobaczysz pliki i podfoldery, bez katalogu Raport2026 jako poziomu wyżej.

4. Pakowanie wybranych plików lub typów plików

4.1. Konkretne pliki

Możesz podać kilka ścieżek w parametrze -Path i spakować je do jednego archiwum:

Compress-Archive -Path C:\Dane\plik1.txt, C:\Dane\Dokumenty\raport.docx -DestinationPath C:\Backup\wybrane_pliki.zip

4.2. Wybrane rozszerzenia (np. tylko JPG)

Aby spakować wyłącznie pliki o określonym rozszerzeniu, użyj wzorca:

Compress-Archive -Path C:\Zdjecia\*.jpg -DestinationPath C:\Backup\zdjecia_jpg.zip

W tym przykładzie spakowane zostaną tylko pliki z rozszerzeniem .jpg. Analogicznie możesz wskazać inne rozszerzenia, np. dokumenty Word:

Compress-Archive -Path C:\Projekty\*.docx -DestinationPath C:\Backup\dokumenty_word.zip

5. Poziom kompresji – szybko vs. mały rozmiar

Parametr -CompressionLevel decyduje o sile kompresji i czasie pakowania. Dostępne są trzy wartości:

  • Fastest – najszybsze pakowanie kosztem większego pliku;
  • Optimal – domyślny, zbalansowany poziom kompresji (polecany);
  • NoCompression – brak kompresji, tylko spakowanie w ZIP bez zmniejszania rozmiaru.

Przykład – kompresja optymalna

W tym przykładzie zastosowano poziom Optimal:

Compress-Archive -Path C:\Projekty\Raport2026\* -CompressionLevel Optimal -DestinationPath C:\Backup\Raport2026_optimal.zip

Przykład – najszybsza kompresja

Ten wariant stawia na maksymalną szybkość:

Compress-Archive -Path C:\Projekty\Raport2026\* -CompressionLevel Fastest -DestinationPath C:\Backup\Raport2026_fast.zip

6. Aktualizowanie istniejącego pliku ZIP (-Update)

Jeśli plik ZIP już istnieje i chcesz dodać do niego nowe pliki (zamiast tworzyć nowe archiwum), użyj parametru -Update:

Compress-Archive -Path C:\Projekty\Raport2026\nowe_pliki\* -Update -DestinationPath C:\Backup\Raport2026.zip

Gdy Raport2026.zip istnieje, nowe pliki zostaną do niego dopisane. Pliki o tych samych nazwach zostaną nadpisane nowszymi wersjami.

7. Nadpisywanie istniejącego pliku ZIP

Bez -Update PowerShell zgłosi błąd, jeśli docelowy ZIP już istnieje. W automatycznych backupach najprościej jest przed stworzeniem nowego archiwum usunąć stare:

$zip = "C:\Backup\Raport2026.zip"

if (Test-Path $zip) { Remove-Item $zip }

Compress-Archive -Path C:\Projekty\Raport2026\* -DestinationPath $zip

Test-Path sprawdza istnienie pliku, a Remove-Item usuwa go, by Compress-Archive mógł utworzyć nowe archiwum.

8. Rozpakowywanie plików ZIP (Expand-Archive)

Do rozpakowywania archiwów ZIP służy cmdlet Expand-Archive. Użyj go zgodnie z poniższą składnią:

Expand-Archive -Path <plik_zip> -DestinationPath <folder_docelowy>

Parametr -Path wskazuje plik ZIP, a -DestinationPath – folder docelowy rozpakowania.

Przykład – rozpakowanie do folderu

Rozpakuj archiwum C:\Backup\Raport2026.zip do C:\Odtworzone\Raport2026 poleceniem:

Expand-Archive -Path C:\Backup\Raport2026.zip -DestinationPath C:\Odtworzone\Raport2026

Jeśli folder docelowy nie istnieje, PowerShell spróbuje go automatycznie utworzyć.

9. Rozpakowywanie z nadpisaniem istniejących plików

W nowszych wersjach PowerShell (Core/7) Expand-Archive obsługuje parametr -Force, który pozwala nadpisać istniejące pliki:

Expand-Archive -Path C:\Backup\Raport2026.zip -DestinationPath C:\Odtworzone\Raport2026 -Force

Bez -Force otrzymasz błąd, jeśli w katalogu docelowym istnieją już pliki o tych samych nazwach.

10. Przykładowy pełny scenariusz – backup projektu

Załóżmy, że chcesz przygotować prosty skrypt, który:

  1. pakuje zawartość folderu projektu,
  2. zapisuje ZIP w katalogu backupów,
  3. nadpisuje stare archiwum.

Skrypt PowerShell

Poniżej gotowy szkielet skryptu do użycia w codziennym backupie:

# Ścieżki

$folderProjektu = "C:\Projekty\Raport2026"

$folderBackup = "C:\Backup"

$zipPlik = Join-Path $folderBackup "Raport2026_backup.zip"

# Upewnij się, że katalog backup istnieje

if (-not (Test-Path $folderBackup)) {

New-Item -ItemType Directory -Path $folderBackup | Out-Null

}

# Usuń stare archiwum, jeśli istnieje

if (Test-Path $zipPlik) {

Remove-Item $zipPlik

}

# Utwórz nowe archiwum ZIP z optymalną kompresją

Compress-Archive -Path "$folderProjektu\*" -CompressionLevel Optimal -DestinationPath $zipPlik

Możesz zapisać powyższy kod w pliku backup-raport.ps1 i uruchamiać go ręcznie lub cyklicznie z Harmonogramu zadań.

11. Jak spakować pliki z hasłem? (rozwiązanie z 7-Zip)

PowerShellowe Compress-Archive nie obsługuje haseł ani szyfrowania. Aby utworzyć ZIP z hasłem, użyj zewnętrznego programu, np. 7-Zip, wywoływanego z poziomu skryptu PowerShell.

Przykład skryptu z 7-Zip

Poniższy przykład pyta o hasło i tworzy chronione hasłem archiwum ZIP za pomocą 7z.exe:

param([string]$plik)

$plik = $plik.Replace("'","")

# Pobranie hasła jako SecureString

$haslo_ss = Read-Host -Prompt "Wpisz hasło:" -AsSecureString

$haslo = [Runtime.InteropServices.Marshal]::PtrToStringAuto(

[Runtime.InteropServices.Marshal]::SecureStringToBSTR($haslo_ss)

)

if ([string]::IsNullOrWhiteSpace($haslo)) {

Write-Host "Błąd: hasło nie może być puste." -ForegroundColor Red

exit 1

}

$folder = Split-Path $plik

$samPlik = Split-Path $plik -Leaf

$nowaNazwa = Join-Path $folder ($samPlik + ".zip")

$paker = "C:\Program Files\7-Zip\7z.exe"

& "$paker" a -tzip "$nowaNazwa" "$plik" -p"$haslo"

Write-Host "Spakowane i zapisane jako: $nowaNazwa"

Uwaga: to rozwiązanie wymaga zainstalowania 7-Zip (7z.exe), a hasło przekazywane jest parametrem -p do programu 7-Zip.

12. Integracja z menu kontekstowym (opcjonalnie, zewnętrzny ZIP z hasłem)

Możesz podpiąć skrypt PowerShell do menu kontekstowego Eksploratora Windows, aby szybko tworzyć archiwa z hasłem dla wskazanego pliku. W tym celu utwórz plik .reg o poniższej zawartości i zaimportuj go do rejestru:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\ZipWithPassword]

@="Zip z hasłem"

[HKEY_CLASSES_ROOT\*\shell\ZipWithPassword\command]

@="powershell.exe -ExecutionPolicy Bypass -File E:\\Sciezka\\pass-zip.ps1 '%1'"

Po dodaniu wpisu w menu pod prawym przyciskiem myszy pojawi się pozycja „Zip z hasłem”, która uruchamia wskazany skrypt. Pamiętaj, że modyfikacja rejestru jest czynnością dla zaawansowanych użytkowników – wykonaj backup przed zmianami.

13. Prosta alternatywa bez PowerShell – „Wyślij do → Folder skompresowany (zip)”

Jeśli wolisz skorzystać z Eksploratora plików, postępuj tak:

  1. Zaznacz plik lub folder.
  2. Kliknij prawym przyciskiem myszy.
  3. Wybierz Wyślij do → Folder skompresowany (zip).

PowerShell jest jednak wygodniejszy, gdy:

  • chcesz automatyzować backupy,
  • pracujesz na wielu folderach naraz,
  • potrzebujesz scenariuszy skryptowych (np. nocne archiwizacje).

14. Najczęstsze problemy i rozwiązania

Poniższa tabela ułatwia szybkie zdiagnozowanie typowych kłopotów i wskazuje proste remedia:

Problem Rozwiązanie
„Compress-Archive is not recognized” Użyj PowerShell 5.1 lub nowszego (Windows 10/11); w starszych systemach zainstaluj nowszy Windows Management Framework.
Brak uprawnień (Access denied) Uruchom PowerShell jako Administrator; upewnij się, że masz dostęp do katalogów źródłowych i docelowych.
ZIP tworzy się, ale jest pusty Sprawdź poprawność ścieżki w -Path; jeśli używasz wzorców (np. *.jpg), upewnij się, że pasują do istniejących plików.
Konflikt nazw przy rozpakowywaniu Użyj -Force w Expand-Archive lub rozpakuj do pustego katalogu.

15. Szybka ściągawka parametrów

Najważniejsze parametry poleceń Compress-Archive i Expand-Archive w pigułce:

Parametr Dotyczy Co robi
-Path Compress/Expand Wskazuje pliki lub folder (albo archiwum ZIP dla Expand-Archive).
-DestinationPath Compress/Expand Określa ścieżkę docelową: plik ZIP lub folder rozpakowania.
-CompressionLevel Compress Ustala poziom kompresji: Fastest, Optimal, NoCompression.
-Update Compress Dodaje/aktualizuje pliki w istniejącym archiwum ZIP.
-Force Expand Pozwala nadpisać istniejące pliki podczas rozpakowywania.

16. Gotowe fragmenty do wklejenia (kopiuj-wklej)

Spakowanie folderu do ZIP:

Compress-Archive -Path C:\TwojFolder\* -DestinationPath C:\Backup\archiwum.zip

Rozpakowanie archiwum ZIP:

Expand-Archive -Path C:\Backup\archiwum.zip -DestinationPath C:\Odtworzone

Spakowanie tylko plików JPG:

Compress-Archive -Path C:\Zdjecia\*.jpg -DestinationPath C:\Backup\zdjecia_jpg.zip

Dopisanie nowych plików do istniejącego ZIP:

Compress-Archive -Path C:\Projekty\nowe\* -Update -DestinationPath C:\Backup\projekt.zip

Udostępnij ten artykuł
Obserwuj
Redaktor IINTE.edu.pl, na co dzień zajmuje się technologiami internetowymi i tłumaczeniem skomplikowanych tematów na prosty język. Pisze poradniki o tym, jak załatwiać sprawy przez internet, jak bezpiecznie korzystać z sieci i jak dobierać sprzęt oraz oprogramowanie. Prywatnie tropi nowinki technologiczne i testuje je, zanim opisze.
Brak komentarzy

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *