2010-01-18 15:37:26 +0000 2010-01-18 15:37:26 +0000
116
116

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

Есть идеи, как исключить wild-carded путь(ы) из команды 7zip командной строки?

Я делаю что-то вроде этого:

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

и хотел бы исключить любые папки \bin\*.* или \obj\*.*, найденные под “FolderToArchive”.

Для исключения файлов можно использовать параметр -x. В файле справки приведен пример использования -x:

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

Это отлично подходит для исключения файла. Но, опять же, я хотел бы исключить папку, указанную в wildcard-файле. В моей папке “FolderToArchive” есть несколько папок, в этих папках могут быть или не быть папки `binЕсть идеи, как исключить wild-carded путь(ы) из команды 7zip командной строки?

Я делаю что-то вроде этого:

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

и хотел бы исключить любые папки \bin\*.* или \obj\*.*, найденные под “FolderToArchive”.

Для исключения файлов можно использовать параметр -x. В файле справки приведен пример использования -x:

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

Это отлично подходит для исключения файла. Но, опять же, я хотел бы исключить папку, указанную в wildcard-файле. В моей папке “FolderToArchive” есть несколько папок, в этих папках могут быть или не быть папки и `objЕсть идеи, как исключить wild-carded путь(ы) из команды 7zip командной строки?

Я делаю что-то вроде этого:

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

и хотел бы исключить любые папки \bin\*.* или \obj\*.*, найденные под “FolderToArchive”.

Для исключения файлов можно использовать параметр -x. В файле справки приведен пример использования -x:

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

Это отлично подходит для исключения файла. Но, опять же, я хотел бы исключить папку, указанную в wildcard-файле. В моей папке “FolderToArchive” есть несколько папок, в этих папках могут быть или не быть папки `binЕсть идеи, как исключить wild-carded путь(ы) из команды 7zip командной строки?

Я делаю что-то вроде этого:

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

и хотел бы исключить любые папки \bin\*.* или \obj\*.*, найденные под “FolderToArchive”.

Для исключения файлов можно использовать параметр -x. В файле справки приведен пример использования -x:

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

Это отлично подходит для исключения файла. Но, опять же, я хотел бы исключить папку, указанную в wildcard-файле. В моей папке “FolderToArchive” есть несколько папок, в этих папках могут быть или не быть папки и . Я бы хотел не включать их в архив.

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

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

Ничто не исключает папку `binЕсть идеи, как исключить wild-carded путь(ы) из команды 7zip командной строки?

Я делаю что-то вроде этого:

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

и хотел бы исключить любые папки \bin\*.* или \obj\*.*, найденные под “FolderToArchive”.

Для исключения файлов можно использовать параметр -x. В файле справки приведен пример использования -x:

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

Это отлично подходит для исключения файла. Но, опять же, я хотел бы исключить папку, указанную в wildcard-файле. В моей папке “FolderToArchive” есть несколько папок, в этих папках могут быть или не быть папки `binЕсть идеи, как исключить wild-carded путь(ы) из команды 7zip командной строки?

Я делаю что-то вроде этого:

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

и хотел бы исключить любые папки \bin\*.* или \obj\*.*, найденные под “FolderToArchive”.

Для исключения файлов можно использовать параметр -x. В файле справки приведен пример использования -x:

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

Это отлично подходит для исключения файла. Но, опять же, я хотел бы исключить папку, указанную в wildcard-файле. В моей папке “FolderToArchive” есть несколько папок, в этих папках могут быть или не быть папки и `objЕсть идеи, как исключить wild-carded путь(ы) из команды 7zip командной строки?

Я делаю что-то вроде этого:

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

и хотел бы исключить любые папки \bin\*.* или \obj\*.*, найденные под “FolderToArchive”.

Для исключения файлов можно использовать параметр -x. В файле справки приведен пример использования -x:

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

Это отлично подходит для исключения файла. Но, опять же, я хотел бы исключить папку, указанную в wildcard-файле. В моей папке “FolderToArchive” есть несколько папок, в этих папках могут быть или не быть папки `binЕсть идеи, как исключить wild-carded путь(ы) из команды 7zip командной строки?

Я делаю что-то вроде этого:

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

и хотел бы исключить любые папки \bin\*.* или \obj\*.*, найденные под “FolderToArchive”.

Для исключения файлов можно использовать параметр -x. В файле справки приведен пример использования -x:

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

Это отлично подходит для исключения файла. Но, опять же, я хотел бы исключить папку, указанную в wildcard-файле. В моей папке “FolderToArchive” есть несколько папок, в этих папках могут быть или не быть папки и . Я бы хотел не включать их в архив.

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

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

Ничто не исключает папку . Это просто ограничение 7zip?

Ответы (3)

142
142
142
2010-01-18 15:53:48 +0000

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

7z.exe a -t7z archive.7z FolderToArchive\ -mx0 -xr!bin -xr!obj
18
18
18
2014-03-01 10:27:16 +0000

Чтобы избежать ошибок, используйте -r или -xr осторожно. 0x2 и 0x2 и предположим, что у вас есть такие каталоги как:

.\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

то, что вы получили в archive.7z:

.\path2\src
.\path5\src

То есть, `.\path2Чтобы избежать ошибок, используйте -r или -xr осторожно. 0x2 и 0x2 и предположим, что у вас есть такие каталоги как:

.\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

то, что вы получили в archive.7z:

.\path2\src
.\path5\src

То есть, и `.\path5Чтобы избежать ошибок, используйте -r или -xr осторожно. 0x2 и 0x2 и предположим, что у вас есть такие каталоги как:

.\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

то, что вы получили в archive.7z:

.\path2\src
.\path5\src

То есть, `.\path2Чтобы избежать ошибок, используйте -r или -xr осторожно. 0x2 и 0x2 и предположим, что у вас есть такие каталоги как:

.\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

то, что вы получили в archive.7z:

.\path2\src
.\path5\src

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

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

Таким образом, если вы хотите исключить только .\path1\path2\bin, но включить все остальные каталоги ‘bin’, команда должна быть такой:

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

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


** Обновление:**

Для Linux есть опция -spf в 7z, которая работает с абсолютным путем.

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

0
0
0
2020-02-20 10:28:15 +0000

Основываясь на ответе @zhazha, уточните, как точно исключить подпапки. В Windows 10 для резервного копирования корневой папки решения Visual Studio:

D:\VS2019\Sln1

тогда:

//goto the parent of the root folder first which make thing clearer
//not sure what will happen if you go into the root folder
cd D:\VS2019
"<path-of-7z>z.exe" a -tzip -mx0 Sln1_backup.zip Sln1 -x!Sln1\.vs -x!Sln1\Debug -x!Sln1\Release -x!Sln1\lib -x!Sln1\Project1\x64 -x!Sln1\Project2\obj

Тогда вы можете быть уверены, что только указанные вложенные папки будут исключены, например Sln1\Project3\obj или Sln1\Project4\lib не будут исключены случайно. Работает для скрытой огромной .vs папки.

-mx0 означает сжатие архива/без сжатия.