Como posso sobrescrever um arquivo existente no 7zip?

4

Estou tentando isso:

7za.exe a "C:\Disc.7z" "C:\test" -v20000000b -m0=BCJ -bd

Mas se eu já criei o arquivo C:\Disc.7z , então o 7zip não comprime nada e me envia esta saída:

System error:
File already exist.

Eu tentei com o switch -y , mas o 7zip não faz nada ...

Como posso substituir o arquivo?

UPDATE

Eu tentei o switch -aoa mas ele não funciona ...

    
por ElektroStudios 18.01.2013 / 08:00

5 respostas

7

Seu problema é que você está usando -v para criar um arquivo de vários volumes. As pessoas têm solicitado ao autor nos últimos 5 anos para permitir que o programa modifique arquivos de vários volumes, mas ele tem não há planos para implementar o recurso em breve. (É open source, desejo algum programador empreendedor faria isso já!)

    
por 20.01.2013 / 00:55
3

Tente usar 7za.exe u em vez de 7za.exe a . O primeiro é usado especificamente para atualizar um arquivo que já existe.

    
por 18.01.2013 / 08:44
3

Atualmente não há como ter essa funcionalidade com opções de linha de comando. A sobregravação é suportada apenas durante a extração de arquivos.

    
por 18.01.2013 / 12:05
1

Solução alternativa

Para contornar esse problema, você pode excluir os arquivos se existirem antes de criá-los novamente. Aqui está uma maneira de fazer isso:

CMD /C FOR %i IN (C:\Disc.7z.???) DO DEL %i && 7za.exe a "C:\Disc.7z" "C:\test" -v20000000b -m0=BCJ -bd

Explicação

  • O CMD /C garante que o comando 7za seja executado apenas uma vez, e não para cada arquivo.
  • O FOR itera em cada arquivo de destino e o exclui. Observe que a expressão cobre apenas volumes com sufixos de três dígitos. Se você espera mais (o que não tenho certeza é possível), você pode substituir o ??? por * .
  • O && executa o segundo comando após o primeiro (se o primeiro for bem-sucedido).
por 18.01.2013 / 11:51
1

Percebi que esse problema não ocorre se eu remover a opção -v . Parece que o 7-Zip não suporta a atualização de volumes de arquivos.

    
por 19.01.2013 / 00:12