Compartilhar via


Compress-Archive

Cria um arquivo compactado, ou arquivo compactado, de arquivos e diretórios especificados.

Sintaxe

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

O cmdlet Compress-Archive cria um arquivo de arquivo compactado ou compactado de um ou mais diretórios ou arquivos especificados. Um arquivo morto empacota vários arquivos, com compactação opcional, em um único arquivo compactado para facilitar a distribuição e o armazenamento. Um arquivo morto pode ser compactado usando o algoritmo de compactação especificado pelo parâmetro CompressionLevel.

O cmdlet Compress-Archive usa a API System.IO.Compression.ZipArchive para compactar arquivos. A API limita o tamanho máximo do arquivo para 2 GB. Para obter mais informações, consulte System.IO.Compression.ZipArchive .

Nota

O cmdlet Compress-Archive ignora arquivos e pastas ocultos ao criar ou atualizar o arquivo morto. Em computadores que não são do Windows, isso inclui arquivos e pastas com o nome que começa com o caractere de período (.).

Para garantir que arquivos e pastas ocultos sejam compactados no arquivo morto, use a API do .NET.

Alguns exemplos usam splatting para reduzir o comprimento da linha dos exemplos de código. Para obter mais informações, consulte about_Splatting.

Exemplos

Exemplo 1: Compactar arquivos para criar um arquivo morto

Este exemplo compacta arquivos de diretórios diferentes e cria um arquivo morto. Um curinga é usado para obter todos os arquivos com uma extensão de arquivo específica. Não há nenhuma estrutura de diretório no arquivo de arquivo morto porque o caminho especifica apenas nomes de arquivo.

$compress = @{
  Path = "C:\Reference\Draftdoc.docx", "C:\Reference\Images\*.vsd"
  CompressionLevel = "Fastest"
  DestinationPath = "C:\Archives\Draft.zip"
}
Compress-Archive @compress

O parâmetro Path aceita nomes de arquivo e nomes de arquivo específicos com curingas, *.vsd. O Path usa uma lista separada por vírgulas para obter arquivos de diretórios diferentes. O nível de compactação é mais rápido para reduzir o tempo de processamento. O parâmetro DestinationPath especifica o local do arquivo Draft.zip. O arquivo Draft.zip contém Draftdoc.docx e todos os arquivos com uma extensão .vsd.

Exemplo 2: Compactar arquivos usando um LiteralPath

Este exemplo compacta arquivos nomeados específicos e cria um novo arquivo morto. Não há nenhuma estrutura de diretório no arquivo de arquivo morto porque o caminho especifica apenas nomes de arquivo.

$compress = @{
LiteralPath= "C:\Reference\Draft Doc.docx", "C:\Reference\Images\diagram2.vsd"
CompressionLevel = "Fastest"
DestinationPath = "C:\Archives\Draft.zip"
}
Compress-Archive @compress

Nomes absolutos de caminho e arquivo são usados porque o parâmetro LiteralPath não aceita curingas. O Path usa uma lista separada por vírgulas para obter arquivos de diretórios diferentes. O nível de compactação é mais rápido para reduzir o tempo de processamento. O parâmetro DestinationPath especifica o local do arquivo Draft.zip. O arquivo Draft.zip contém apenas Draftdoc.docx e diagram2.vsd.

Exemplo 3: Compactar um diretório que inclui o diretório raiz

Este exemplo compacta um diretório e cria um arquivo morto que inclui o diretório raiz e todos os seus arquivos e subdiretórios. O arquivo de arquivo morto tem uma estrutura de diretório porque o Path especifica um diretório raiz.

Compress-Archive -Path C:\Reference -DestinationPath C:\Archives\Draft.zip

Compress-Archive usa o parâmetro Path para especificar o diretório raiz, C:\Reference. O parâmetro DestinationPath especifica o local do arquivo de arquivo morto. O arquivo Draft.zip inclui o diretório raiz Reference e todos os seus arquivos e subdiretórios.

Exemplo 4: Compactar um diretório que exclui o diretório raiz

Este exemplo compacta um diretório e cria um arquivo de arquivo morto que exclui diretório raiz porque o Path usa um curinga de asterisco (*). O arquivo contém uma estrutura de diretório que contém os arquivos e subdiretórios do diretório raiz.

Compress-Archive -Path C:\Reference\* -DestinationPath C:\Archives\Draft.zip

Compress-Archive usa o parâmetro Path para especificar o diretório raiz, C:\Reference com um curinga de asterisco (*). O parâmetro DestinationPath especifica o local do arquivo de arquivo morto. O arquivo Draft.zip contém os arquivos e subdiretórios do diretório raiz. O diretório raiz Reference é excluído do arquivo morto.

Exemplo 5: Compactar apenas os arquivos em um diretório raiz

Este exemplo compacta apenas os arquivos em um diretório raiz e cria um arquivo morto. Não há nenhuma estrutura de diretório no arquivo morto porque apenas os arquivos são compactados.

Compress-Archive -Path C:\Reference\*.* -DestinationPath C:\Archives\Draft.zip

Compress-Archive usa o parâmetro Path para especificar o diretório raiz, C:\Reference com um curinga star-dot-star (*.*). O parâmetro DestinationPath especifica o local do arquivo de arquivo morto. O arquivo de Draft.zip contém apenas os arquivos do diretório raiz do Reference e o diretório raiz é excluído.

Exemplo 6: Usar o pipeline para arquivar arquivos

Este exemplo envia arquivos para baixo do pipeline para criar um arquivo morto. Não há nenhuma estrutura de diretório no arquivo de arquivo morto porque o caminho especifica apenas nomes de arquivo.

Get-ChildItem -Path C:\Reference\Afile.txt, C:\Reference\Images\Bfile.txt |
  Compress-Archive -DestinationPath C:\Archives\PipelineFiles.zip

Get-ChildItem usa o parâmetro Path para especificar dois arquivos de diretórios diferentes. Cada arquivo é representado por um objeto FileInfo e é enviado pelo pipeline para Compress-Archive. Os dois arquivos especificados são arquivados em PipelineFiles.zip.

Exemplo 7: Usar o pipeline para arquivar um diretório

Este exemplo envia um diretório para baixo do pipeline para criar um arquivo morto. Os arquivos são enviados como objetos e diretórios FileInfo como objetos DirectoryInfo. A estrutura de diretório do arquivo não inclui o diretório raiz, mas seus arquivos e subdiretórios estão incluídos no arquivo morto.

Get-ChildItem -Path C:\LogFiles |
    Compress-Archive -DestinationPath C:\Archives\PipelineDir.zip

Get-ChildItem usa o parâmetro Path para especificar o diretório raiz C:\LogFiles. Cada FileInfo e objeto directoryInfo é enviado pelo pipeline.

Compress-Archive adiciona cada objeto ao arquivo PipelineDir.zip. O parâmetro Path não é especificado porque os objetos de pipeline são recebidos na posição de parâmetro 0.

Exemplo 8: como a recursão pode afetar arquivos

Este exemplo mostra como a recursão pode duplicar arquivos em seu arquivo morto. Por exemplo, se você usar Get-ChildItem com o parâmetro Recurse. Como processos de recursão, cada FileInfo e objeto directoryInfo é enviado pelo pipeline e adicionado ao arquivo morto.

Get-ChildItem -Path C:\TestLog -Recurse |
  Compress-Archive -DestinationPath C:\Archives\PipelineRecurse.zip

O diretório C:\TestLog não contém nenhum arquivo. Ele contém um subdiretório chamado testsub que contém o arquivo testlog.txt.

Get-ChildItem usa o parâmetro Path para especificar o diretório raiz, C:\TestLog. O parâmetro Recurse processa os arquivos e diretórios. Um objeto do DirectoryInfo é criado para testsub e um objeto FileInfo testlog.txt.

Cada objeto é enviado pelo pipeline para Compress-Archive. O DestinationPath especifica o local do arquivo de arquivo morto. O parâmetro Path não é especificado porque os objetos de pipeline são recebidos na posição de parâmetro 0.

O resumo a seguir descreve o conteúdo do arquivo PipelineRecurse.zip que contém um arquivo duplicado:

  • O objeto DirectoryInfo cria o diretório testsub e contém o arquivo testlog.txt, que reflete a estrutura de diretório original.
  • O objeto FileInfo cria uma testlog.txt duplicada na raiz do arquivo. O arquivo duplicado é criado porque a recursão enviou um objeto de arquivo para Compress-Archive. Esse comportamento é esperado porque cada objeto enviado pelo pipeline é adicionado ao arquivo morto.

Exemplo 9: Atualizar um arquivo morto existente

Este exemplo atualiza um arquivo morto existente, Draft.zip, no diretório C:\Archives. Neste exemplo, o arquivo de arquivo morto existente contém o diretório raiz e seus arquivos e subdiretórios.

Compress-Archive -Path C:\Reference -Update -DestinationPath C:\Archives\Draft.zip

O comando atualiza Draft.zip com versões mais recentes de arquivos existentes no diretório C:\Reference e seus subdiretórios. Além disso, novos arquivos que foram adicionados a C:\Reference ou seus subdiretórios são incluídos no arquivo Draft.zip atualizado.

Parâmetros

-CompressionLevel

Especifica a quantidade de compactação a ser aplicada ao criar o arquivo morto. Compactação mais rápida requer menos tempo para criar o arquivo, mas pode resultar em tamanhos de arquivo maiores.

Se esse parâmetro não for especificado, o comando usará o valor padrão, Ideal.

A seguir estão os valores aceitáveis para este parâmetro:

  • mais rápido. Use o método de compactação mais rápido disponível para reduzir o tempo de processamento. Compactação mais rápida pode resultar em tamanhos de arquivo maiores.
  • NoCompression . Não compacta os arquivos de origem.
  • ideal. O tempo de processamento depende do tamanho do arquivo.
Tipo:String
Valores aceitos:Optimal, NoCompression, Fastest
Cargo:Named
Valor padrão:Optimal
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Confirm

Solicita a confirmação antes de executar o cmdlet.

Tipo:SwitchParameter
Aliases:cf
Cargo:Named
Valor padrão:False
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-DestinationPath

Esse parâmetro é necessário e especifica o caminho para o arquivo de saída de arquivo morto. O DestinationPath deve incluir o nome do arquivo compactado e o caminho absoluto ou relativo para o arquivo compactado.

Se o nome do arquivo em DestinationPath não tiver uma extensão de nome de arquivo .zip, o cmdlet adicionará a extensão .zip nome do arquivo.

Tipo:String
Cargo:1
Valor padrão:None
Obrigatório:True
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Force

Use esse parâmetro para substituir um arquivo de arquivo morto existente.

Tipo:SwitchParameter
Cargo:Named
Valor padrão:False
Obrigatório:True
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-LiteralPath

Especifica o caminho ou caminhos para os arquivos que você deseja adicionar ao arquivo compactado de arquivo morto. Ao contrário do parâmetro caminho, o valor de LiteralPath é usado exatamente como é digitado. Nenhum caractere é interpretado como curinga. Se o caminho incluir caracteres de escape, coloque cada caractere de escape entre aspas simples, para instruir o PowerShell a não interpretar nenhum caractere como sequências de escape. Para especificar vários caminhos e incluir arquivos em vários locais no arquivo compactado de saída, use vírgulas para separar os caminhos.

Tipo:String[]
Aliases:PSPath
Cargo:Named
Valor padrão:None
Obrigatório:True
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga:False

-PassThru

Faz com que o cmdlet produza um objeto de arquivo que representa o arquivo morto criado.

Esse parâmetro foi introduzido no PowerShell 6.0.

Tipo:SwitchParameter
Cargo:Named
Valor padrão:False
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Path

Especifica o caminho ou caminhos para os arquivos que você deseja adicionar ao arquivo compactado de arquivo morto. Para especificar vários caminhos e incluir arquivos em vários locais, use vírgulas para separar os caminhos.

Esse parâmetro aceita caracteres curinga. Caracteres curinga permitem que você adicione todos os arquivos em um diretório ao arquivo morto.

O uso de curingas com um diretório raiz afeta o conteúdo do arquivo:

  • Para criar um arquivo que inclui o diretório raiz e todos os seus arquivos e subdiretórios, especifique o diretório raiz no Path sem curingas. Por exemplo: -Path C:\Reference
  • Para criar um arquivo que exclui diretório raiz, mas fecha todos os seus arquivos e subdiretórios, use o curinga asterisco (*). Por exemplo: -Path C:\Reference\*
  • Para criar um arquivo que só fecha os arquivos no diretório raiz, use o curinga star-dot-star (*.*). Os subdiretórios da raiz não estão incluídos no arquivo morto. Por exemplo: -Path C:\Reference\*.*
Tipo:String[]
Cargo:0
Valor padrão:None
Obrigatório:True
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga:True

-Update

Atualiza o arquivo morto especificado substituindo versões de arquivo mais antigas no arquivo morto por versões de arquivo mais recentes que têm os mesmos nomes. Você também pode adicionar esse parâmetro para adicionar arquivos a um arquivo morto existente.

Tipo:SwitchParameter
Cargo:Named
Valor padrão:False
Obrigatório:True
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-WhatIf

Mostra o que aconteceria se o cmdlet fosse executado. O cmdlet não é executado.

Tipo:SwitchParameter
Aliases:wi
Cargo:Named
Valor padrão:False
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

Entradas

String

Você pode canalizar uma cadeia de caracteres que contém um caminho para um ou mais arquivos.

Saídas

None

Por padrão, esse cmdlet não retorna nenhuma saída.

FileInfo

Quando você usa o parâmetro PassThru, esse cmdlet retorna um objeto FileInfo.

Observações

O uso da recursão e do envio de objetos no pipeline pode duplicar arquivos em seu arquivo morto. Por exemplo, se você usar Get-ChildItem com o parâmetro Recurse, cada FileInfo e directoryInfo objeto enviado pelo pipeline será adicionado ao arquivo morto.

O cmdlet Compress-Archive usa codificação UTF-8. Outras ferramentas de arquivo zip podem usar um esquema de codificação diferente. Ao extrair arquivos com nomes de arquivo não armazenados usando a codificação UTF-8, Expand-Archive usa o valor bruto encontrado no arquivo morto. Isso pode resultar em um nome de arquivo diferente do nome de arquivo de origem armazenado no arquivo.