Como posso extrair todos os arquivos em um arquivo zip que contenha mais de um arquivo com o mesmo nome / caminho?

2

Eu tenho um arquivo zip que contém vários arquivos que possuem o mesmo nome de arquivo (e não há subpastas). Estes são, na verdade, arquivos diferentes: eles têm tamanhos e conteúdos exclusivos e são "duplicados" apenas no nome. Minha pergunta é: como posso extraí-los todos sem substituir um outro? Nem o WinRAR nem o PowerArchiver parecem capazes de fazer isso automaticamente (ambos param depois de extrair apenas três arquivos, a menos que eu diga que está tudo bem para sobrescrever). Se eu extrair manualmente os arquivos um de cada vez, ele extrairá apenas o arquivo adicionado mais recentemente com um determinado nome; ainda sei, com base no tamanho geral do arquivo, que os dados dos outros arquivos estão lá. Então eu tentei renomear os arquivos enquanto ainda estava no zip (eu copiei o zip primeiro); Demorou 10 minutos para renomear um arquivo e acabou renomeando ambos (embora os tamanhos exclusivos fossem mantidos)! Não sei o que fazer, por favor ajude.

EDIT: Problema solucionado! Considerando que o WinRAR e o PowerArchiver falharam bastante, um pequeno programa gratuito de código aberto chamado 7-Zip foi capaz de realizar a extração sem problemas.

    
por Guest 28.12.2013 / 10:34

3 respostas

0

Você pode tentar usar o utilitário de linha de comando unzip do infozip. Ele tem uma opção -B para criar um backup de qualquer arquivo sobrescrito durante a extração, o que pode permitir que você obtenha dois arquivos com o mesmo nome. Você pode baixá-lo do link .

Se isso não funcionar, deve ser possível escrever um programa com bastante facilidade usando (por exemplo) a classe Java java.util.zip.ZipInputStream que percorre o arquivo e extrai entradas duplicadas com novos nomes. Se você não tem a habilidade de fazer isso sozinho, existem vários sites de contratação freelance com inúmeros programadores que poderiam fazê-lo por não muito dinheiro.

    
por 28.12.2013 / 10:49
0

Você pode tentar extrair os arquivos um por um e depois renomear após cada extração. Para isso, mantenha um comando DOS / CMD pronto (para renomear arquivos recém-criados) e uma janela DOS / CMD aberta para renomear cada novo arquivo, possivelmente anexando um caractere no final.

    
por 28.12.2013 / 15:45
0

Ainda não sei ao certo como essa situação surge (onde um arquivo pode ter vários arquivos com o mesmo caminho e nome completos) - não faz sentido porque o arquivo existente deve ser atualizado / substituído em vez de um novo sendo adicionado.

Independentemente disso, sempre que eu me deparo com isso, eu simplesmente contorná-lo usando a função de renomeação automática que alguns arquivadores têm. Quando você extrai esse arquivo, o programa extrairá o primeiro arquivo com esse nome e, em seguida, quando detectar uma colisão nos arquivos subseqüentes, ele perguntará o que você deseja fazer. A maioria dos programas oferecerá a opção de ignorar e continuar ou sobrescrever, mas alguns programas como 7-Zip e O WinRAR permite que você renomeie o arquivo e / ou renomeie automaticamente todos os arquivos com colisões de nomes.

7-Zip (figura 1) acrescentará um sublinhado com um número incremental ao nome do arquivo (por exemplo, foobar_1.txt , foobar_2.txt , etc.) enquanto o WinRAR (figura 2) acrescentará um número incremental entre parênteses (por exemplo, foobar(1).txt , foobar(2).txt , etc.)

Figura 1 prompt de colisão de nome de arquivo do 7-Zip

Figura2promptdecolisãodenomedearquivodoWinRAR

Figura 3 Nomes de arquivo resultantes

    
por 29.12.2013 / 02:33