Como compactar (e descompactar) arquivos usando o PowerShell

O formato de arquivo ZIP reduz o tamanho dos arquivos compactando-os em um único arquivo. Esse processo economiza espaço em disco, criptografa dados e facilita o compartilhamento de arquivos com outras pessoas. Veja como compactar e descompactar arquivos usando o PowerShell.

Como compactar arquivos usando o PowerShell

Vamos começar compactando alguns arquivos em um arquivo ZIP usando o cmdlet Compress-Archive. Ele pega o caminho para todos os arquivos que você deseja compactar — vários arquivos são separados por vírgula — e os arquiva no destino que você especificar.

Primeiro, abra o PowerShell pesquisando-o no menu Iniciar e digitando o seguinte comando, substituindo e com o caminho para os arquivos que você deseja compactar e o nome e a pasta que você deseja, respectivamente:

Compress-Archive -LiteralPath  -DestinationPath 

Ao fornecer o caminho de destino, certifique-se de dar um nome ao arquivo ou o PowerShell o salvará como “.zip” onde você especificar.

Nota: As cotações ao redor do caminho são necessárias apenas quando o caminho do arquivo contém um espaço.

Como alternativa, para compactar todo o conteúdo de uma pasta – e todas as suas subpastas – você pode usar o seguinte comando, substituindo e com o caminho para os arquivos que você deseja compactar e o nome e a pasta para a qual deseja ir, respectivamente:

Compress-Archive -LiteralPath  -DestinationPath 

No exemplo anterior, colocamos o caminho para um diretório com vários arquivos e pastas sem especificar arquivos individuais. O PowerShell pega tudo dentro do diretório raiz e o compacta, subpastas e tudo.

O cmdlet Compress-Archive permite usar um caractere curinga

para expandir ainda mais a funcionalidade. Ao usar o caractere, você pode excluir o diretório raiz, compactar apenas os arquivos em um diretório ou escolher todos os arquivos de um tipo específico. Para usar um curinga com Compress-Archive, você deve usar o parâmetro -Path, pois -LiteralPath não os aceita.

Compress-Archive -Path C:pathtofile* -DestinationPath C:pathtoarchive.zip

Acima, abordamos como incluir o diretório raiz e todos os seus arquivos e subdiretórios ao criar um arquivo compactado. No entanto, se você deseja excluir a pasta raiz do arquivo Zip, você pode usar um curinga para omiti-la do arquivo. Ao adicionar um asterisco

Compress-Archive -Path C:pathtofile*.jpg -DestinationPath C:pathtoarchive.zip

até o final do caminho do arquivo, você diz ao PowerShell apenas para pegar o que está dentro do diretório raiz. Deve ser algo assim:

Em seguida, digamos que você tenha uma pasta com vários tipos de arquivos diferentes (.doc, .txt, .jpg etc.), mas só deseja compactar todos de um tipo. Você pode dizer ao PowerShell para arquivá-los sem tocar nos outros explicitamente. A notação do comando ficaria assim:

Compress-Archive -Path C:pathtofile*.* -DestinationPath C:pathtoarchive.zip

Nota: Os subdiretórios e os arquivos da pasta raiz não são incluídos no arquivo com este método.

Finalmente, se você quiser um arquivo que apenas comprima arquivos no diretório raiz—e todos os seus subdiretórios—você usaria o curinga estrela-ponto-estrela (*.*) para compactá-los. Ficaria algo assim:

Compress-Archive -Path C:pathtofiles -Update -DestinationPath C:pathtoarchive.zip

Nota: Os subdiretórios e os arquivos da pasta raiz não são incluídos no arquivo com este método.

Mesmo após a conclusão do arquivo, você pode atualizar um arquivo compactado existente com o uso do parâmetro -Update. Ele permite que você substitua as versões de arquivo mais antigas no arquivo por versões mais recentes que tenham os mesmos nomes e adicione arquivos que foram criados no diretório raiz. Vai parecer algo assim:

Como descompactar arquivos usando o PowerShell Além de poder compactar arquivos e pastas, o PowerShell tem a capacidade de descompactar arquivos. O processo é ainda mais fácil do que comprimi-los; tudo que você precisa é o arquivo de origem e um destino para os dados prontos para descompactar. Abra o PowerShell e digite o seguinte comando, substituindo

Expand-Archive -LiteralPath  -DestinationPath 

e

com o caminho para os arquivos que você deseja compactar e o nome e a pasta para a qual deseja ir, respectivamente:

A pasta de destino especificada para extrair os arquivos será preenchida com o conteúdo do arquivo. Se a pasta não existia antes da descompactação, o PowerShell criará a pasta e colocará o conteúdo nela antes de descompactar.

Por padrão, se você deixar de fora o parâmetro -DestinationPath, o PowerShell descompactará o conteúdo no diretório raiz atual e usará o nome do arquivo Zip para criar uma nova pasta.

No exemplo anterior, se deixarmos de fora -DestinationPath , o PowerShell criará a pasta “Archive” no caminho “C:Usersbrady” e extrairá os arquivos do arquivo para a pasta.

Se a pasta já existir no destino, o PowerShell retornará um erro ao tentar descompactar os arquivos. No entanto, você pode forçar o PowerShell a substituir os dados pelos novos usando o parâmetro -Force.

Você só deve usar o parâmetro -Force se os arquivos antigos não forem mais necessários, pois isso substituirá irreversivelmente os arquivos em seu computador.