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?
- 2. Podstawy: pakowanie całego folderu do ZIP (Compress-Archive)
- 3. Pakowanie tylko zawartości folderu (bez samego katalogu)
- 4. Pakowanie wybranych plików lub typów plików
- 5. Poziom kompresji – szybko vs. mały rozmiar
- 6. Aktualizowanie istniejącego pliku ZIP (-Update)
- 7. Nadpisywanie istniejącego pliku ZIP
- 8. Rozpakowywanie plików ZIP (Expand-Archive)
- 9. Rozpakowywanie z nadpisaniem istniejących plików
- 10. Przykładowy pełny scenariusz – backup projektu
- 11. Jak spakować pliki z hasłem? (rozwiązanie z 7-Zip)
- 12. Integracja z menu kontekstowym (opcjonalnie, zewnętrzny ZIP z hasłem)
- 13. Prosta alternatywa bez PowerShell – „Wyślij do → Folder skompresowany (zip)”
- 14. Najczęstsze problemy i rozwiązania
- 15. Szybka ściągawka parametrów
- 16. Gotowe fragmenty do wklejenia (kopiuj-wklej)
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ę:
- Kliknij przycisk Start.
- Wpisz PowerShell w wyszukiwarkę.
- 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:
- pakuje zawartość folderu projektu,
- zapisuje ZIP w katalogu backupów,
- 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:
- Zaznacz plik lub folder.
- Kliknij prawym przyciskiem myszy.
- 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








