Обновите все файлы в архиве с помощью 7zip
Я использую версию командной строки 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
для архива zip, но это не сработало.
Параметр 7zip -u обновляет архив, но учитывает структуру папок. Чтобы обновить все текстовые файлы, вам необходимо воссоздать структуру папок и поместить текстовые файлы в соответствующие места, а затем архивировать всю папку с возможностью обновления.
Если вы хотите многократно обновлять файл 1.txt и легко обновлять все файлы, вы можете использовать mklink
создать соединения с этим файлом 1.txt, так что вам нужно обновить файл только один раз.