Compress-Archive
Vytvoří komprimovaný archiv ZIP ze zadaných souborů a adresářů.
Syntaxe
Compress-Archive
[-Path] <String[]>
[-DestinationPath] <String>
[-CompressionLevel <String>]
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Compress-Archive
[-Path] <String[]>
[-DestinationPath] <String>
[-CompressionLevel <String>]
-Update
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Compress-Archive
[-Path] <String[]>
[-DestinationPath] <String>
[-CompressionLevel <String>]
-Force
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Compress-Archive
-LiteralPath <String[]>
[-DestinationPath] <String>
[-CompressionLevel <String>]
-Update
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Compress-Archive
-LiteralPath <String[]>
[-DestinationPath] <String>
[-CompressionLevel <String>]
-Force
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Compress-Archive
-LiteralPath <String[]>
[-DestinationPath] <String>
[-CompressionLevel <String>]
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
Rutina Compress-Archive
vytvoří komprimovaný nebo zazipovaný archivní soubor z jednoho nebo více zadaných souborů nebo adresářů. Archivní balíček obsahuje více souborů s volitelnou kompresí do jednoho komprimovaného souboru pro snadnější distribuci a ukládání. Archivní soubor lze komprimovat pomocí algoritmu komprese určeného parametrem CompressionLevel .
Rutina Compress-Archive
používá k komprimaci souborů rozhraní API System.IO.Compression.ZipArchive .
Rozhraní API omezuje maximální velikost souboru na 2 GB. Rozhraní .NET API pracuje se soubory, které odpovídají oficiální specifikaci formátu ZIP společnosti PKWARE Inc. Další informace naleznete v tématu System.IO.Compression.ZipArchive.
Poznámka:
Rutina Compress-Archive
ignoruje skryté soubory a složky při vytváření nebo aktualizaci souboru archivu. Na počítačích s jiným systémem než Windows to zahrnuje soubory a složky s názvem, které začínají znakem tečky (.
).
Pokud chcete zajistit, aby se skryté soubory a složky komprimovaly do archivu, použijte místo toho rozhraní .NET API.
Některé příklady používají k zmenšení délky řádku ukázek kódu. Další informace najdete v tématu about_Splatting.
Příklady
Příklad 1: Komprese souborů pro vytvoření archivovaného souboru
Tento příklad komprimuje soubory z různých adresářů a vytvoří archivní soubor. Zástupný znak slouží k získání všech souborů s konkrétní příponou souboru. V souboru archivu není žádná adresářová struktura, protože cesta určuje jenom názvy souborů.
$compress = @{
Path = "C:\Reference\Draftdoc.docx", "C:\Reference\Images\*.vsd"
CompressionLevel = "Fastest"
DestinationPath = "C:\Archives\Draft.zip"
}
Compress-Archive @compress
Parametr Path přijímá konkrétní názvy souborů a názvy souborů se zástupnými cardy, *.vsd
. Cesta používá seznam oddělený čárkami k získání souborů z různých adresářů. Úroveň komprese je nejrychlejší , aby se zkrátila doba zpracování. Parametr DestinationPath určuje umístění Draft.zip
souboru. Soubor Draft.zip
obsahuje Draftdoc.docx
a všechny soubory s příponou .vsd
.
Příklad 2: Komprese souborů pomocí literálpathu
Tento příklad komprimuje konkrétní pojmenované soubory a vytvoří nový archivní soubor. V souboru archivu není žádná adresářová struktura, protože cesta určuje jenom názvy souborů.
$compress = @{
LiteralPath= "C:\Reference\Draft Doc.docx", "C:\Reference\Images\diagram2.vsd"
CompressionLevel = "Fastest"
DestinationPath = "C:\Archives\Draft.zip"
}
Compress-Archive @compress
Absolutní cesta a názvy souborů se používají, protože parametr LiteralPath nepřijímá zástupné cardy. Cesta používá seznam oddělený čárkami k získání souborů z různých adresářů. Úroveň komprese je nejrychlejší , aby se zkrátila doba zpracování. Parametr DestinationPath určuje umístění Draft.zip
souboru. Soubor Draft.zip
obsahuje Draftdoc.docx
pouze a diagram2.vsd
.
Příklad 3: Komprese adresáře, který obsahuje kořenový adresář
Tento příklad zkomprimuje adresář a vytvoří archivní soubor, který obsahuje kořenový adresář, a všechny jeho soubory a podadresáře. Archivní soubor má adresářovou strukturu, protože cesta určuje kořenový adresář.
Compress-Archive -Path C:\Reference -DestinationPath C:\Archives\Draft.zip
Compress-Archive
používá parametr Path k určení kořenového adresáře , C:\Reference
. Parametr DestinationPath určuje umístění souboru archivu. Archiv Draft.zip
obsahuje Reference
kořenový adresář a všechny jeho soubory a podadresáře.
Příklad 4: Komprese adresáře, který vylučuje kořenový adresář
Tento příklad zkomprimuje adresář a vytvoří soubor archivu, který vyloučí kořenový adresář, protože cesta používá zástupný znak hvězdičky (*
). Archiv obsahuje adresářovou strukturu, která obsahuje soubory a podadresáře kořenového adresáře.
Compress-Archive -Path C:\Reference\* -DestinationPath C:\Archives\Draft.zip
Compress-Archive
používá parametr Path k určení kořenového adresáře C:\Reference
se zástupným znakem hvězdičky (*
). Parametr DestinationPath určuje umístění souboru archivu. Archiv Draft.zip
obsahuje soubory a podadresáře kořenového adresáře. Reference
Kořenový adresář je vyloučen z archivu.
Příklad 5: Komprese pouze souborů v kořenovém adresáři
Tento příklad komprimuje pouze soubory v kořenovém adresáři a vytvoří archivní soubor. V archivu není žádná adresářová struktura, protože jsou komprimované pouze soubory.
Compress-Archive -Path C:\Reference\*.* -DestinationPath C:\Archives\Draft.zip
Compress-Archive
pomocí parametru Path určuje kořenový adresář se C:\Reference
zástupným znakem star-dot-star (*.*
). Parametr DestinationPath určuje umístění souboru archivu. Archiv Draft.zip
obsahuje pouze soubory kořenového Reference
adresáře a kořenový adresář je vyloučený.
Příklad 6: Použití kanálu k archivaci souborů
Tento příklad odešle soubory z kanálu, aby se vytvořil archiv. V souboru archivu není žádná adresářová struktura, protože cesta určuje jenom názvy souborů.
Get-ChildItem -Path C:\Reference\Afile.txt, C:\Reference\Images\Bfile.txt |
Compress-Archive -DestinationPath C:\Archives\PipelineFiles.zip
Get-ChildItem
používá parametr Path k určení dvou souborů z různých adresářů. Každý soubor je reprezentován FileInfo objekt a je odeslán kanál do Compress-Archive
.
Dva zadané soubory jsou archivovány v PipelineFiles.zip
souboru .
Příklad 7: Použití kanálu k archivaci adresáře
Tento příklad odešle adresář dolů kanálu pro vytvoření archivu. Soubory se odesílají jako objekty FileInfo a adresáře jako objekty DirectoryInfo . Adresářová struktura archivu neobsahuje kořenový adresář, ale jeho soubory a podadresáře jsou součástí archivu.
Get-ChildItem -Path C:\LogFiles | Compress-Archive -DestinationPath C:\Archives\PipelineDir.zip
Get-ChildItem
používá parametr Path k určení kořenového C:\LogFiles
adresáře. Každý FileInfo a DirectoryInfo objekt se odešle do kanálu.
Compress-Archive
přidá každý objekt do archivu PipelineDir.zip
. Parametr Path není zadán, protože objekty kanálu jsou přijaty do pozice parametru 0.
Příklad 8: Jak rekurze může ovlivnit archivy
Tento příklad ukazuje, jak rekurze může duplikovat soubory v archivu. Pokud například použijete Get-ChildItem
s parametrem Recurse . Při rekurzivních procesech se všechny FileInfo a DirectoryInfo objekty odesílají do kanálu a přidají se do archivu.
Get-ChildItem -Path C:\TestLog -Recurse |
Compress-Archive -DestinationPath C:\Archives\PipelineRecurse.zip
Adresář C:\TestLog
neobsahuje žádné soubory. Obsahuje podadresář s názvem testsub
, který obsahuje testlog.txt
soubor.
Get-ChildItem
používá parametr Path k určení kořenového adresáře , C:\TestLog
. Parametr Recurse zpracovává soubory a adresáře. Objekt DirectoryInfo je vytvořen pro testsub
a FileInfo objekt testlog.txt
.
Každý objekt se odešle do kanálu do Compress-Archive
. Cílová cesta určuje umístění souboru archivu. Parametr Path není zadán, protože objekty kanálu jsou přijaty do pozice parametru 0.
Následující souhrn popisuje obsah archivu PipelineRecurse.zip
, který obsahuje duplicitní soubor:
- Objekt DirectoryInfo vytvoří
testsub
adresář a obsahujetestlog.txt
soubor, který odráží původní adresářovou strukturu. - FileInfo objekt vytvoří duplikát
testlog.txt
v kořenovém adresáři archivu. Duplicitní soubor je vytvořen, protože rekurze odeslala objekt souboru doCompress-Archive
. Toto chování se očekává, protože každý objekt odeslaný kanál se přidá do archivu.
Příklad 9: Aktualizace existujícího souboru archivu
Tento příklad aktualizuje existující soubor archivu C:\Archives
v Draft.zip
adresáři. V tomto příkladu obsahuje existující soubor archivu kořenový adresář a jeho soubory a podadresáře.
Compress-Archive -Path C:\Reference -Update -DestinationPath C:\Archives\Draft.zip
Příkaz aktualizuje Draft.zip
novější verze existujících souborů v C:\Reference
adresáři a jeho podadresářích. Do aktualizovaného Draft.zip
archivu se také zahrnou nové soubory přidané do C:\Reference
podadresáře nebo jejich podadresáře.
Parametry
-CompressionLevel
Určuje, kolik komprese se má použít při vytváření archivového souboru. Rychlejší komprese vyžaduje k vytvoření souboru méně času, ale může mít za následek větší velikosti souborů.
Pokud tento parametr není zadaný, použije příkaz výchozí hodnotu Optimal.
Následující hodnoty jsou přijatelné pro tento parametr:
- Nejrychlejší. Použijte nejrychlejší metodu komprese, která je k dispozici ke zkrácení doby zpracování. Rychlejší komprese může mít za následek větší velikosti souborů.
- NoCompression. Nezkomprimuje zdrojové soubory.
- Optimální. Doba zpracování závisí na velikosti souboru.
Typ: | String |
Přípustné hodnoty: | Optimal, NoCompression, Fastest |
Position: | Named |
Default value: | Optimal |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-Confirm
Před spuštěním rutiny zobrazí výzvu k potvrzení.
Typ: | SwitchParameter |
Aliasy: | cf |
Position: | Named |
Default value: | False |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-DestinationPath
Tento parametr je povinný a určuje cestu k archivačnímu výstupnímu souboru. Cílová cesta by měla obsahovat název komprimovaného souboru a absolutní nebo relativní cestu k zazipovanému souboru.
Pokud název souboru v DestinationPathu nemá příponu .zip
názvu souboru, rutina přidá příponu .zip
názvu souboru.
Typ: | String |
Position: | 1 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-Force
Tento parametr použijte k přepsání existujícího souboru archivu.
Typ: | SwitchParameter |
Position: | Named |
Default value: | False |
Vyžadováno: | True |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-LiteralPath
Určuje cestu nebo cesty k souborům, které chcete přidat do souboru ZIP archivu. Na rozdíl od parametru Path se hodnota LiteralPath používá přesně tak, jak je zadaná. Žádné znaky nejsou interpretovány jako zástupné znaky. Pokud cesta obsahuje řídicí znaky, uzavřete každý řídicí znak do jednoduchých uvozovek, aby PowerShell neinterpretoval žádné znaky jako řídicí sekvence. Pokud chcete zadat více cest a zahrnout soubory do více umístění ve výstupním zazipovaném souboru, oddělte cesty čárkami.
Typ: | String[] |
Aliasy: | PSPath |
Position: | Named |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | False |
-PassThru
Způsobí, že rutina vypíše objekt souboru představující vytvořený archivní soubor.
Tento parametr byl představen v PowerShellu 6.0.
Typ: | SwitchParameter |
Position: | Named |
Default value: | False |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-Path
Určuje cestu nebo cesty k souborům, které chcete přidat do souboru ZIP archivu. Pokud chcete zadat více cest a zahrnout soubory do více umístění, oddělte cesty čárkami.
Tento parametr přijímá zástupné znaky. Zástupné znaky umožňují přidat všechny soubory v adresáři do souboru archivu.
Použití zástupných znaků s kořenovým adresářem má vliv na obsah archivu:
- Pokud chcete vytvořit archiv, který obsahuje kořenový adresář a všechny jeho soubory a podadresáře, zadejte kořenový adresář v cestě bez zástupných znaků. Příklad:
-Path C:\Reference
- Pokud chcete vytvořit archiv, který vyloučí kořenový adresář, ale zazipuje všechny jeho soubory a podadresáře, použijte zástupný znak hvězdičky (
*
). Příklad:-Path C:\Reference\*
- Chcete-li vytvořit archiv, který zazipuje pouze soubory v kořenovém adresáři, použijte zástupný znak star-dot-star (
*.*
). Do archivu nejsou zahrnuté podadresáře kořenového adresáře. Příklad:-Path C:\Reference\*.*
Typ: | String[] |
Position: | 0 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | True |
-Update
Aktualizuje zadaný archiv nahrazením starších verzí souborů v archivu novějšími verzemi souborů, které mají stejné názvy. Tento parametr můžete přidat také pro přidání souborů do existujícího archivu.
Typ: | SwitchParameter |
Position: | Named |
Default value: | False |
Vyžadováno: | True |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-WhatIf
Zobrazuje, co by se stalo při spuštění rutiny. Rutina se nespustí.
Typ: | SwitchParameter |
Aliasy: | wi |
Position: | Named |
Default value: | False |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
Vstupy
Řetězec, který obsahuje cestu k jednomu nebo více souborům, můžete pipetovat.
Výstupy
None
Ve výchozím nastavení tato rutina nevrací žádný výstup.
Pokud použijete parametr PassThru , vrátí tato rutina objekt FileInfo .
Poznámky
Použití rekurze a odeslání objektů v kanálu může duplikovat soubory v archivu. Pokud například použijete Get-ChildItem
s parametrem Recurse , každý FileInfo a DirectoryInfo objekt, který je odeslán dolů kanál, se přidá do archivu.
Rutina Compress-Archive
používá kódování UTF-8. Jiné nástroje archivu ZIP můžou používat jiné schéma kódování. Při extrahování souborů s názvy souborů, které nejsou uloženy pomocí kódování UTF-8, Expand-Archive
používá nezpracovanou hodnotu nalezenou v archivu. Výsledkem může být název souboru, který se liší od zdrojového názvu souboru uloženého v archivu.