Questão Como posso substituir um arquivo existente no 7zip?


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 essa saída:

System error:
File already exist.

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

Como posso substituir o arquivo?


ATUALIZAR

Eu tentei o interruptor -aoa mas também não funciona ...


4


origem


Tente fazê-lo a partir de um cmd elevado (Executar como administrador) - Ofiris
@Ofiris, isso não resolve o problema. - Sam
É aceitável que o 7-Zip atualize os arquivos existentes em vez de sobrescrevê-los? - Sam


Respostas:


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 multi-volume, mas ele tem sem planos para implementar o recurso em breve. (É open source, desejo algum programador empreendedor faria isso já!)


7





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


3



Obrigado por comentar, eu tentei, mas o resultado é o mesmo: "arquivo já existe" - ElektroStudios
O 7-Zip normalmente atualiza arquivos se eles já existirem. A razão que não funciona neste caso é a -v interruptor está sendo usado. - Sam
@ Sam é o que me lembrei também, mas depois pensei que talvez usar uma opção de atualização específica pudesse ajudar - user1301428
@sam, eu tentei antes de postar com o switch -volume e sem ele (e sem qualquer outro switch), o resultado é o mesmo (testado com o 7zip 7.20 e 7.22 beta), desculpe pelo meu inglês. - ElektroStudios
@ElektroHacker, isso é interessante. Quando eu testo, se eu remover o -v switch, tudo funciona corretamente; O 7-Zip cria o arquivo se ele não existir e o atualiza se já existir. Não se preocupe com o seu inglês; Está claro. - Sam


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.


3





Trabalho ao redor

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 7za O comando é 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 eu não tenho certeza é possível), você poderia substituir o ??? com *.
  • o && executa o segundo comando após o primeiro (se o primeiro for bem-sucedido).

1



Obrigado, eu sei, excluindo primeiro os arquivos é uma solução ... mas estou procurando uma solução usando os parâmetros do 7zip. - ElektroStudios
Parece que isso é um bug no 7-Zip, então eu suspeito que uma solução alternativa seja sua única opção fora de alterar a fonte ou aguardar uma correção de bug. - Sam


Eu notei que esse problema não ocorre para mim se eu remover o -v interruptor. Parece que o 7-Zip não suporta a atualização de volumes de arquivos.


1