sexta-feira, 19 de outubro de 2012

Descompactar um arquivo usando powershell



Segue abaixo como descompactar arquivos usando powershell.

$Source = "c:\arquivo.zip"
$Destination = "c:\pastadestino"


Unblock-File $Destination
#apenas no PowerShell v3            

#chama a aplicação do zip e abre o arquivo zip
$helper = New-Object -ComObject Shell.Application
$files = $helper.NameSpace($Source).Items()

#copia os arquivos para pasta de destino
$helper.NameSpace($Destination).CopyHere($files)

=============== ATUALIZANDO O POST =======================
Só para auxiliar os proximos.

No Powershell v5 você pode utilizar os seguintes cmdlets

Para descompactar.

Expand-Archive -Path $Source -DestinationPath $Destination

https://msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell.archive/expand-archive

4 comentários:

  1. tenho um código que compacta um arquivo quebrando o mesmo em vários, bastando apenas determinar a capacidade que quero pra cada um.

    $diretorioDeBackup = "E:\Backup"
    $nomeArquivo = "E:\Backup"

    $compactador = "C:\Program Files\7-Zip\7z"
    $compactadorParametros = "a -t7z -mx=1 -mmt=off -V524288000 ""$($nomeArquivo).7z"" ""$($diretorioDeBackup)"""
    $comando = "$($compactador) $($compactadorParametros)"

    Write-Host "Executando $($comando) ..."
    $ps = new-object System.Diagnostics.Process
    $ps.StartInfo.FileName = $compactador
    $ps.StartInfo.Arguments = $compactadorParametros
    $ps.StartInfo.WorkingDirectory = $diretorioDeBackup
    $ps.StartInfo.RedirectStandardOutput = $true
    $ps.StartInfo.RedirectStandardError = $true
    $ps.StartInfo.UseShellExecute = $false
    if ($ps.Start() -eq $true) {
    Write-Host "Processo iniciado em $($ps.StartTime)"
    $ps.WaitForExit()
    Write-Host "Processo finalizado em $($ps.ExitTime)"
    Remove-Item E:\Backup -Force -Recurse
    $ps.StandardOutput.ReadToEnd()
    $ps.StandardError.ReadToEnd()
    $exiteCode = $ps.ExitCode
    } else {
    Write-Host "Erro executando compactador."
    }



    porém agora preciso descompacta-lo, e não sei como fazer!
    Tem alguma ideia???
    Obrigada

    ResponderExcluir
  2. Só para auxiliar os proximos.

    No Powershell v5 você pode utilizar os seguintes cmdlets

    Para descompactar.

    Expand-Archive -Path $Source -DestinationPath $Destination

    https://msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell.archive/expand-archive

    Para comprimir

    PS C:\> Compress-Archive -LiteralPath C:\Reference\Draftdoc.docx, C:\Reference\Images\diagram2.vsd -CompressionLevel Optimal -DestinationPath C:\Archives\Draft.Zip


    https://msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell.archive/compress-archive

    ResponderExcluir