Обновите все файлы в архиве с помощью 7zip

0

Я использую версию командной строки 7zip (7za.exe).

У меня есть следующий файл в папке:

7za.exe
1.txt 
test.zip

test.zipсодержит несколько вхождений 1.txtвнутри его структуры архива.

Мне нужно 7zip, чтобы обновить (перезаписать) все 1.txt в test.zip с файлом 1.txt, который расположен вдоль 7za.exe

Можно ли это сделать? Какая команда? Я пробовал 7za.exe u test.zip 1.txt, но это только обновленный 1.txt, который лежит в корневой папке в архиве, но не во внутренних ».

Максим В. Павлов
источник

Ответы:

2

Вы можете указать файл с помощью переключателя -siи читать из стандартного ввода. С помощью скрипта вы можете обновить все файлы. Но у меня сработало только когда тип архива 7z. Пример:

$ 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

В документации 7-Zip 9.20 и 15.14:

Примечание. Текущая версия 7-Zip поддерживает чтение архивов из stdin только для архивов xz, lzma, tar, gzip и bzip2.

LZMA является методом сжатия по умолчанию для типа архива 7z. Я пытался -mm=lzmaдля почтового архива, но это не сработало.

Marco
источник
0

Параметр 7zip -u обновляет архив, но учитывает структуру папок. Чтобы обновить все текстовые файлы, вам необходимо воссоздать структуру папок и поместить текстовые файлы в соответствующие места, а затем архивировать всю папку с возможностью обновления.

Если вы хотите многократно обновлять файл 1.txt и легко обновлять все файлы, вы можете использовать его mklinkдля создания соединений с этим файлом 1.txt, так что вам нужно обновить файл только один раз.

LPChip
источник
1
Если я знаю точное местоположение всех 1.txt в структуре zip, могу ли я вызвать какую-то команду для каждой из них, чтобы обновить конкретную u?
Максим Павлов