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

7Zip - 命令行:通过通配符模式排除文件夹?

有什么办法可以从命令行7zip命令中排除通配符路径?

我正在做这样的事情。

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

我想排除 “FolderToArchive "下面的\bin\*.*\obj\*.*文件夹。

要排除文件,可以使用-x参数。帮助文件给出了这个使用-x的例子。

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

这对于排除文件来说非常好。但是,我又想排除一个通配符指定的文件夹。在我的 "FolderToArchive "下有多个文件夹,在这些文件夹下可能有也可能没有`bin有什么办法可以从命令行7zip命令中排除通配符路径?

我正在做这样的事情。

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

我想排除 "FolderToArchive "下面的\bin\*.*\obj\*.*文件夹。

要排除文件,可以使用-x参数。帮助文件给出了这个使用-x的例子。

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

这对于排除文件来说非常好。但是,我又想排除一个通配符指定的文件夹。在我的 "FolderToArchive "下有多个文件夹,在这些文件夹下可能有也可能没有和`obj有什么办法可以从命令行7zip命令中排除通配符路径?

我正在做这样的事情。

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

我想排除 "FolderToArchive "下面的\bin\*.*\obj\*.*文件夹。

要排除文件,可以使用-x参数。帮助文件给出了这个使用-x的例子。

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

这对于排除文件来说非常好。但是,我又想排除一个通配符指定的文件夹。在我的 "FolderToArchive "下有多个文件夹,在这些文件夹下可能有也可能没有`bin有什么办法可以从命令行7zip命令中排除通配符路径?

我正在做这样的事情。

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

我想排除 "FolderToArchive "下面的\bin\*.*\obj\*.*文件夹。

要排除文件,可以使用-x参数。帮助文件给出了这个使用-x的例子。

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

这对于排除文件来说非常好。但是,我又想排除一个通配符指定的文件夹。在我的 "FolderToArchive "下有多个文件夹,在这些文件夹下可能有也可能没有和文件夹。我希望不要将这些文件夹包含在存档中。

我试过

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

等模式,似乎都不能排除`bin有什么办法可以从命令行7zip命令中排除通配符路径?

我正在做这样的事情。

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

我想排除 "FolderToArchive "下面的\bin\*.*\obj\*.*文件夹。

要排除文件,可以使用-x参数。帮助文件给出了这个使用-x的例子。

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

这对于排除文件来说非常好。但是,我又想排除一个通配符指定的文件夹。在我的 "FolderToArchive "下有多个文件夹,在这些文件夹下可能有也可能没有`bin有什么办法可以从命令行7zip命令中排除通配符路径?

我正在做这样的事情。

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

我想排除 "FolderToArchive "下面的\bin\*.*\obj\*.*文件夹。

要排除文件,可以使用-x参数。帮助文件给出了这个使用-x的例子。

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

这对于排除文件来说非常好。但是,我又想排除一个通配符指定的文件夹。在我的 "FolderToArchive "下有多个文件夹,在这些文件夹下可能有也可能没有和`obj有什么办法可以从命令行7zip命令中排除通配符路径?

我正在做这样的事情。

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

我想排除 "FolderToArchive "下面的\bin\*.*\obj\*.*文件夹。

要排除文件,可以使用-x参数。帮助文件给出了这个使用-x的例子。

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

这对于排除文件来说非常好。但是,我又想排除一个通配符指定的文件夹。在我的 "FolderToArchive "下有多个文件夹,在这些文件夹下可能有也可能没有`bin有什么办法可以从命令行7zip命令中排除通配符路径?

我正在做这样的事情。

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

我想排除 "FolderToArchive "下面的\bin\*.*\obj\*.*文件夹。

要排除文件,可以使用-x参数。帮助文件给出了这个使用-x的例子。

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

这对于排除文件来说非常好。但是,我又想排除一个通配符指定的文件夹。在我的 "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

要递归地排除binobj文件夹,你可以使用命令。

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

为了避免错误,请谨慎使用-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

你在archive.7z中得到的是:

.\path2\src
.\path5\src

也就是说,`.\path2为了避免错误,请谨慎使用-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

你在archive.7z中得到的是:

.\path2\src
.\path5\src

也就是说,和`.\path5为了避免错误,请谨慎使用-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

你在archive.7z中得到的是:

.\path2\src
.\path5\src

也就是说,`.\path2为了避免错误,请谨慎使用-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

你在archive.7z中得到的是:

.\path2\src
.\path5\src

也就是说,和成了archive.7z中大的文件夹,两个bin目录都被排除在外。

-x只支持路径/文件名与archive.7z中的top文件夹**相关。

所以,如果你只想排除.\path1\path2\bin,但要包括所有其他的'bin'目录,命令应该是这样的。

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

我试着在-x中使用绝对路径,但从未成功。


更新:

Linux的7z有一个选项-spf,可以使用绝对路径。

根据 Marco 的说法,-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表示存档/不压缩。