Recursivamente descompacte os arquivos onde eles residem e, em seguida, exclua os arquivos

4

Eu fiz uma configuração no software de backup que eu uso. Normalmente, eu faria com que os arquivos de um compartilhamento de rede fossem carregados em uma unidade sobressalente, compactados em pastas zip e enviados para o hub externo.

O que aconteceu foi que a compactação aconteceu primeiro, então agora tenho um compartilhamento de rede cheio de meus diretórios originais, mas todos os arquivos foram compactados em sua própria pasta zip.

Existe uma maneira rápida de descompactar todas as pastas zip no servidor onde elas estão e excluir os arquivos ZIP? Eu tenho 7-zip que parece que poderia fazer o trabalho.

O que eu tentei até agora :

Eu executei uma pesquisa e arquivos ZIP, depois selecionei "Extrair aqui" no menu 7zip, mas isso extrai os arquivos ZIP para qualquer pasta em que tenha clicado com o botão direito, em vez de onde eles residem. Eu tenho o controle de versão de arquivo ativado, mas o último backup que eu tenho é muito longe no passado.

    
por Moses 15.07.2013 / 17:30

5 respostas

4

Um script PowerShell rápido e sujo para fazer o que você precisa, você vai precisar da versão de linha de comando 7zip. Basta alterar os dois caminhos no sript e testá-lo primeiro, não tenho a oportunidade de fazê-lo no momento.

$folderPath="X:\Test";

Get-ChildItem $folderPath -recurse | %{ 

    if($_.Name -match "^*.'.zip$")
    {
        $parent="$(Split-Path $_.FullName -Parent)";    
        write-host "Extracting $($_.FullName) to $parent"

        $arguments=@("e", "'"$($_.FullName)'"", "-o'"$($parent)'"");
        $ex = start-process -FilePath "'"C:\Path\Tozipz.exe'"" -ArgumentList $arguments -wait -PassThru;

        if( $ex.ExitCode -eq 0)
        {
            write-host "Extraction successful, deleting $($_.FullName)"
            rmdir -Path $_.FullName -Force
        }
    }
}
    
por 15.07.2013 / 18:27
1

Isso pode ser executado na linha de comando:

for /r %f in (*.zip) do 7z x "%f" -o"%~pf" && del "%f"

Detalhes de / r: link

O% ~ pf é expandido para o caminho (como indicado no comando 'for' help: for /?).

    
por 13.02.2018 / 11:22
0

Esta versão resolve todas as isuues com espaços e coloca arquivos no diretório de origem de cada arquivo:

set folderPath="N:\Private
for /f "usebackq delims=|" %%f in ('dir /s /b %folderPath%\*.zip"') do "C:\Program Files-Zipz.exe" x "%%f" -aoa -o"%%~dpf" && del "%%f"
    
por 22.11.2014 / 08:15
-1

O seguinte pode ser executado a partir da linha de comando do Windows. Modifique o caminho para o executável 7-Zip, conforme necessário.
set folderPath="X:\Test"
for /f %f in ('dir /s /b %folderPath%\*.zip') do "C:\Program Files-Zipz.exe" x %f -o%folderPath%\* && del /p %f

Remova o /p se você não quiser ser solicitado a excluir cada arquivo zip.

    
por 18.07.2013 / 22:44
-1

use Winrar em vez de 7ZIP e, em seguida, selecione todos os seus arquivos zip e clique com o botão direito, selecione Extract each archive to separate folder

isso extrairá cada zip em sua respectiva pasta e, em seguida, excluirá todos os ZIPs

    
por 25.07.2013 / 14:09