Atualiza todos os arquivos no arquivo com 7zip

0

Estou usando uma versão de linha de comando do 7zip (7za.exe).

Eu tenho o seguinte arquivo na pasta:

7za.exe
1.txt 
test.zip

test.zip contém várias ocorrências de 1.txt dentro de sua estrutura de pastas compactadas.

Eu preciso do 7zip para atualizar (sobrescrever) todo o arquivo 1.txt no test.zip com o arquivo 1.txt localizado ao longo do 7za.exe

Isso poderia ser feito? Qual é o comando? Eu tentei 7za.exe u test.zip 1.txt , mas isso só atualizou 1.txt que está na pasta raiz no arquivo, mas não nos internos '.

    
por Maxim V. Pavlov 20.04.2016 / 18:42

2 respostas

2

Você pode especificar o arquivo pelo comutador -si e ler de stdin. Com um script você pode atualizar todos os arquivos. Mas funcionou para mim apenas quando o tipo de arquivo é 7z. Exemplo:

$ 7z l test.7z 
7-Zip [64] 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18
(...)
   Date      Time    Attr         Size   Compressed  Name
------------------- ----- ------------ ------------  ------------------------
2016-04-20 17:20:08 ....A            2            8  1.txt
2016-04-20 17:20:08 ....A            2               dir1/1.txt
2016-04-20 17:20:08 ....A            2               dir2/1.txt
2016-04-20 17:20:16 D....            0            0  dir2
2016-04-20 17:20:14 D....            0            0  dir1
------------------- ----- ------------ ------------  ------------------------
                                     6            8  3 files, 2 folders

$ 7z u test.7z -sidir1/1.txt < 1.txt

$ 7z l test.7z 
(...)
   Date      Time    Attr         Size   Compressed  Name
------------------- ----- ------------ ------------  ------------------------
2016-04-20 17:20:08 ....A            2            9  1.txt
2016-04-20 17:20:08 ....A            2               dir2/1.txt
2016-04-20 17:22:08 .....            4            9  dir1/1.txt
2016-04-20 17:20:16 D....            0            0  dir2
2016-04-20 17:20:14 D....            0            0  dir1
------------------- ----- ------------ ------------  ------------------------
                                     8           18  3 files, 2 folders

Na documentação do 7-Zip 9.20 e 15.14:

Note: The current version of 7-Zip support reading of archives from stdin only for xz, lzma, tar, gzip and bzip2 archives.

LZMA é o método de compactação padrão para o tipo de arquivo 7z. Eu tentei -mm=lzma para o arquivo zip, mas não funcionou.

    
por 20.04.2016 / 23:28
0

A opção 7zip -u atualiza o arquivo, mas respeita a estrutura da pasta. Para atualizar todos os arquivos de texto, você precisa recriar a estrutura de pastas e colocar os arquivos de texto em locais apropriados e, em seguida, zipar a pasta inteira com a opção de atualização.

Se você deseja atualizar o arquivo 1.txt várias vezes e atualizar todos os arquivos com facilidade, use mklink para criar junções neste arquivo 1.txt para que seja necessário atualizar o arquivo apenas uma vez.

    
por 20.04.2016 / 18:54