103

Любая идея, как исключить подстановочный путь (ы) из командной строки 7zip команды?

Я делаю что-то такое:

7z.exe a -t7z archive.7z FolderToArchive\ -mx0

и хотел бы исключить любые папки \bin\*.* или \obj\*.* найденные под "FolderToArchive". Чтобы исключить файлы, вы можете использовать параметр -x . В файле справки приведен пример использования -x:

7z a -tzip archive.zip *.txt -x!temp.*

Это отлично подходит для исключения файла. Но, опять же, я хотел бы исключить папку, указанную подстановочным знаком. Под моим "FolderToArchive" есть несколько папок, в этих папках могут быть или не быть папки bin\ и obj\ . Я хотел бы не включать их в архив.

Я пробовал такие шаблоны, как:

-x!bin\* -x!bin\*.* -x!\bin\* -x!\bin\*.* -x!\\bin\\* -x!\\bin\\*.*

Кажется, никто не исключает. Это просто ограничение 7zip?

2 ответа2

121

Чтобы рекурсивно исключить папки bin и obj, вы можете использовать команду:

7z.exe a -t7z archive.7z FolderToArchive\ -mx0 -xr!bin -xr!obj
12

Чтобы избежать ошибок, используйте -r или -xr осторожно.

Предположим, у вас есть такие каталоги:

.\path1\path2\bin
.\path1\path2\src
.\path3\path4\path5\bin
.\path3\path4\path5\src

и запустите команду:

7z a -t7z archive.7z .\path1\path2 .\path3\path4\path5 -xr!bin

что вы получили в архиве 7z:

.\path2\src
.\path5\src

То есть .\path2\ и .\path5\ стали верхней папкой в archive.7z, и оба каталога bin были исключены.

-x поддерживает только путь / имя файла относительно верхней папки в архиве.

Итак, если вы хотите исключить только .\path1\path2\bin , но включить все остальные каталоги 'bin', команда должна выглядеть следующим образом:

7z a -t7z archive.7z .\path1\path2 .\path3\path4\path5 -x!path2\bin

Я пытался использовать абсолютный путь в -x, но никогда не получалось.


Обновить:

В Linux для Linux есть опция -spf которая работает с абсолютным путем.

По словам Марко, -spf также доступен в Windows с 7-zip 15.14

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .