it-swarm-ru.tech

7Zip - Командная строка: Исключить папку (и) по шаблону?

Любая идея, как исключить подстановочный путь (ы) из командной строки 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?

104
Yoopergeek

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

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

Чтобы избежать ошибок, используйте -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\ стали папкой top в 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

13
zhazha