O 7zip pode remover diretórios vazios depois de extrair um arquivo?

1

Eu tenho um arquivo 7zip que tem vários arquivos / pastas que eu quero extrair para um lugar específico. Eu simplifiquei o exemplo para torná-lo mínimo, completo e verificável.

-Eu não quero manter a estrutura de diretórios, então estou usando o comando e . Eu só quero que todos os arquivos (em todos os diretórios) para ir para um lugar.

-Eu tenho um diretório de saída específico, então também estou usando -o .

Uma restrição é que eu não consigo alterar o arquivo original (isso envolveria outra equipe e eu preferiria não fazer isso). Eu gostaria idealmente de não ter que codificar diretórios para remover depois de extrair o arquivo.

O problema vem depois que tudo é extraído - eu fiquei com algumas pastas vazias no meu diretório de saída. Existe uma maneira de o 7zip remover esses diretórios vazios ou não criá-los em primeiro lugar?

Minha linha de comando 7zip se parece com:

D:z.exe e D:\MyArchive.zip -oD:\ExtractToHere

Um exemplo de arquivo .zip teria uma estrutura como:

./A/1.txt
./B/2.txt
./C/3.txt
./D/fileWithNoExt

O que eu quero no meu diretório de saída é (e nada mais):

./1.txt
./2.txt
./3.txt
./fileWithNoExt

O que eu tenho no meu diretório de saída é ( A , B e C são todos diretórios vazios):

./1.txt
./2.txt
./3.txt
./fileWithNoExt
./A/
./B/
./C/
./D/
    
por PerryC 06.01.2016 / 00:33

4 respostas

1

Existe apenas uma maneira de pensar, e tem armadilhas

Seu comando atual, mas inclui:

D:z.exe e D:\MyArchive.zip -oD:\ExtractToHere *.* -r

Os problemas com isso são que

  1. Arquivos sem uma extensão não seriam extraídos
  2. Diretórios com um. no meio deles ainda seria extraído

Para sua estrutura de exemplo acima, ela deve funcionar como planejado, mas não sei quais são seus requisitos reais. Não acredito que exista uma maneira de excluir pastas especificamente.

    
por 08.01.2016 / 18:44
1

Can 7zip remove empty directories after extracting an archive?

I would ideally like to not have to hard code directories to remove after I extract the archive.

I'm left with some empty folders in my output directory. Is there a way for 7zip to either remove these empty directories or not create them in the first place?

Eu testei e confirmei que a lógica abaixo funciona como esperado para remover os diretórios vazios abaixo do diretório de extração com os comandos 7Zip que você está executando atualmente.

Você teria que definir seu arquivo de origem e extrair o local e, em seguida, copiá-lo e colá-lo no prompt de comando para fazer exatamente o que foi explicado.

  • Não sei ao certo o que o preocupa com a codificação do diretório de extração e do (s) nome (s) do arquivo zip para extrair, mas seu exemplo mostra que você está fazendo exatamente isso. Portanto, este método abaixo não incluirá mais esforço do que o que o seu exemplo mostra.

Além disso, com este método, você pode deixar seus comandos 7Zip da mesma forma que você os usa agora.

Este exemplo de trabalho confirmado abaixo pode ser expandido para fazer um loop em todos os arquivos zip de uma pasta específica, se necessário, em vez de codificar explicitamente de uma forma ou de outra como você estava, etc. adicione um exemplo com isso também, então me avise.

Exemplo de lógica de prompt de comando de trabalho

@ECHO ON
SET SourceFile=D:\MyArchive.zip
SET ExtractDir=D:\ExtractToHere

D:z.exe e %SourceFile% -o%ExtractDir%

FOR /F "TOKENS=*" %A IN ('"DIR /S /B /AD "%ExtractDir%""') DO RD "%~A"

Mais recursos e leitura

por 08.01.2016 / 20:31
0

Se você pode executar outro comando após descompactar, você pode usar o robocopy para excluir as pastas vazias

 ROBOCOPY folderName folderName /S /MOVE

source: link

    
por 08.01.2016 / 17:07
0

Se uma abordagem de dois passos for viável, você poderá listar o conteúdo com 7z l e analisar os diretórios vazios. A partir daí, você pode incluir o que deseja com -i ou excluir o que não deseja com -x , dependendo de qual será mais eficiente para você.

    
por 08.01.2016 / 19:50