7zip: Как исключить файлы (не типы файлов), используя файл списка исключений?

11

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

oscilatingcretin
источник

Ответы:

9

После нескольких часов поисков я наконец понял это. Вот синтаксис переключателя:

7z a -xr@exclude.txt backup.7z c:\whatever\*

Обратите внимание, -xrвместо -x. rУказывает на рекурсивное поэтому он может соответствовать исключенные файлы в глубоких иерархии папок. Также формат текстового файла может быть как минимум ANSI или UTF-8.

Что касается файла, содержащего файлы, то, как сказал OldWolf, это список, разделенный символами возврата каретки:

Telerik.Reporting.dll
Telerik.Reporting.Service.dll
Telerik.ReportViewer.WebForms.dll
Telerik.Web.Design.dll
Telerik.Web.UI.dll
*.txt

Работает как шарм.

oscilatingcretin
источник
1
Спасибо! Я пытался сделать исключение с помощью параметра подстановки, и оказалось, что я пропустил этот rпараметр. Это правильный способ рекурсивного исключения файлов PNG в bash (одинарные кавычки, чтобы остановить расширение bash !и *): -xr'!*.png' (edit: одинарные кавычки вместо escape)
thomasa88
4

Я думаю, что вы хотите переключатель -x с @

7z a -t7z my.zip * -x@myexclusion.lst

Оглядываясь назад, я понял, что вы могли иметь в виду, что вам нужен синтаксис для файла списка. Это должен быть список, разделенный новой строкой. Возможно, вы столкнулись с проблемой кодировки. 7z ожидает, что он будет в формате UTF-8, вы можете переопределить это с помощью ключа -scs или вы можете указать блокноте сохранить файл в формате UTF-8

OldWolf
источник
2
Спасибо за напоминание о кодировке файла. Я часами ломал голову над тем, почему мой список исключений не выполнялся. Я создаю файл в сценарии PowerShell, используя Out-File, по умолчанию Unicode. Меняя его на вывод UTF8 и вдруг все просто работает.
WileCau
0

Если ваш список будет очень коротким, вы можете иметь более одного флага -x:

7z a -r CppSourceJBR.zip * .cpp .h -x! Stdafx. -x! targetver.h

Кстати, во время тестирования мне пришлось продолжать удалять файл .zip. Когда я забыл это, например, targetver.h все еще был в ZIP с последнего запуска.

JBR
источник