Jak komprimovat (a rozbalovat) soubory pomocí PowerShellu

Photo of author

By etechblogcz

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é.