Mettez à jour tous les fichiers de l'archive avec 7zip

0

J'utilise une version en ligne de commande de 7zip (7za.exe).

J'ai le fichier suivant dans le dossier:

7za.exe
1.txt 
test.zip

test.zip contient plusieurs occurrences de 1.txt dans sa structure de dossier zippée.

J'ai besoin de 7zip pour mettre à jour (écraser) tout 1.txt dans test.zip avec le fichier 1.txt situé le long de 7za.exe.

Cela pourrait-il être fait? Quelle est la commande? J'ai essayé 7za.exe u test.zip 1.txt, mais cela ne met à jour que 1.txt qui se trouve dans le dossier racine de l’archive, mais pas dans les dossiers internes

Maxim V. Pavlov
la source

Réponses:

2

Vous pouvez spécifier le fichier par le commutateur -si et lire de stdin. Avec un script, vous pouvez mettre à jour tous les fichiers. Mais cela ne fonctionnait pour moi que lorsque le type d'archive est 7z. Exemple:

$ 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

Dans la documentation de 7-Zip 9.20 et 15.14:

Remarque: la version actuelle de 7-Zip prend en charge la lecture des archives stdin uniquement pour les archives xz, lzma, tar, gzip et bzip2.

LZMA est la méthode de compression par défaut pour le type d'archive 7z. j'ai essayé -mm=lzma pour l'archive zip, mais cela n'a pas fonctionné.

Marco
la source
0

L'option 7zip -u met à jour l'archive, mais respecte la structure du dossier. Afin de mettre à jour tous les fichiers texte, vous devez recréer la structure du dossier et placer les fichiers texte aux emplacements appropriés, puis compresser le dossier complet avec l'option de mise à jour.

Si vous souhaitez mettre à jour le fichier 1.txt plusieurs fois et mettre facilement à jour tous les fichiers, vous pouvez utiliser mklink pour créer des jonctions vers ce fichier 1.txt afin que vous ne deviez mettre à jour le fichier qu'une seule fois.

LPChip
la source
1
Si je connais les emplacements exacts de tous les 1.txt dans la structure de zip, puis-je appeler une commande pour chacun en mettre à jour un avec u?
Maxim V. Pavlov