Formát ZIP je praktický způsob, jak zmenšit objem dat. Funguje tak, že soubory stlačí do jediného balíčku. Díky tomu šetříte místo na disku, můžete data zašifrovat a také je snadno sdílet s ostatními. Ukážeme si, jak v PowerShellu soubory komprimovat a rozbalovat.
Komprese souborů pomocí PowerShellu
Začneme komprimací, tedy vytvořením ZIP archivu pomocí příkazu Compress-Archive
. Tento příkaz umí vzít několik souborů, oddělených čárkou, a zabalit je do archivu na určené místo.
Nejprve otevřete PowerShell – najdete ho v nabídce Start. Poté zadejte následující příkaz, přičemž
nahradíte cestou k souborům, které chcete zkomprimovat, a
nahradíte cestou a názvem cílového archivu:
Compress-Archive -LiteralPath -DestinationPath
Nezapomeňte při zadávání cílové cesty pojmenovat výsledný soubor ZIP, jinak ho PowerShell uloží pouze jako „.zip“ do vámi určené lokality.
Poznámka: Uvozovky kolem cesty jsou potřeba jen tehdy, pokud název souboru nebo složky obsahuje mezeru.
Alternativně, chcete-li do ZIPu zabalit veškerý obsah složky, včetně všech jejích podsložek, použijte následující příkaz. Opět nahraďte
cestou ke složce a
cestou a názvem pro cílový archiv:
Compress-Archive -LiteralPath -DestinationPath
V předchozím příkladu jsme zadali cestu k adresáři, který obsahuje různé soubory a složky, aniž bychom museli specifikovat jednotlivé soubory. PowerShell vezme vše, co je v kořenovém adresáři, a zkomprimuje to, včetně všech podsložek.
Příkaz Compress-Archive
umožňuje používat zástupné znaky, což rozšiřuje jeho možnosti. S pomocí zástupných znaků můžete například vyloučit kořenový adresář, komprimovat pouze soubory určitého typu, nebo vybrat všechny soubory v adresáři. Pro použití zástupných znaků je nutné použít parametr -Path
namísto -LiteralPath
, protože ten zástupné znaky neakceptuje.
Compress-Archive -Path C:pathtofile* -DestinationPath C:pathtoarchive.zip
Výše jsme si ukázali, jak do archivu zahrnout kořenový adresář a veškerý jeho obsah. Pokud ale chcete z ZIPu kořenovou složku vyloučit, lze to udělat pomocí zástupného znaku. Přidáním hvězdičky *
na konec cesty k souboru PowerShellu řeknete, ať zahrne pouze obsah kořenového adresáře.
Compress-Archive -Path C:pathtofile*.jpg -DestinationPath C:pathtoarchive.zip
Představte si, že máte složku s různými typy souborů (.doc, .txt, .jpg atd.) a chcete zkomprimovat pouze soubory určitého typu. PowerShellu můžete říct, ať archivuje jenom soubory tohoto typu, aniž by se dotkl ostatních. Příkaz by vypadal takto:
Compress-Archive -Path C:pathtofile*.* -DestinationPath C:pathtoarchive.zip
Poznámka: Podadresáře a soubory kořenové složky nejsou touto metodou zahrnuty do archivu.
A konečně, pokud chcete archivovat pouze soubory, které jsou v kořenovém adresáři, ale chcete zahrnout i všechny podadresáře, použijte zástupný znak *.*
. Výsledný příkaz by vypadal takto:
Compress-Archive -Path C:pathtofiles -Update -DestinationPath C:pathtoarchive.zip
Aktualizace existujícího archivu
Po vytvoření archivu ho můžete aktualizovat pomocí parametru -Update
. S jeho pomocí můžete nahradit starší verze souborů novějšími, které mají stejné názvy a přidat soubory, které byly do kořenového adresáře nově přidány. Příkaz vypadá takto:
Rozbalení souborů pomocí PowerShellu
PowerShell kromě komprimace souborů nabízí i funkci rozbalování archivů. Tento proces je ještě jednodušší než komprimace. Stačí vám zdrojový soubor ZIP a cílové místo, kam se mají data rozbalit. Otevřete PowerShell a zadejte následující příkaz. Nahraďte
cestou k souboru ZIP a
cestou ke složce, kam chcete soubory rozbalit:
Expand-Archive -LiteralPath -DestinationPath
Složka, kterou jste určili jako cíl, se naplní obsahem archivu. Pokud složka před rozbalením neexistovala, PowerShell ji vytvoří a obsah do ní rozbalí.
Pokud parametr -DestinationPath
vynecháte, PowerShell rozbalí obsah do aktuálního adresáře a vytvoří novou složku s názvem, který je totožný s názvem rozbalovaného souboru ZIP.
Pokud tedy v předchozím příkladu vynecháte parametr -DestinationPath
, PowerShell vytvoří složku „Archive“ v cestě „C:Usersbrady“ a rozbalí soubory do ní.
Pokud cílová složka již existuje, PowerShell při pokusu o rozbalení vrátí chybu. Tomu lze předejít použitím parametru -Force
, který PowerShellu řekne, ať existující soubory přepíše.
Parametr -Force
byste měli používat jen tehdy, pokud jste si jisti, že staré soubory již nepotřebujete. Jejich přepsání je totiž nevratné.