Yoo*_*eek 136 command-line 7-zip
知道如何从命令行 7zip 命令中排除通配符路径吗?
我正在做这样的事情:
7z.exe a -t7z archive.7z FolderToArchive\ -mx0
Run Code Online (Sandbox Code Playgroud)
并希望排除在“FolderToArchive”下找到的任何\bin\*.*
或\obj\*.*
文件夹。
要排除文件,您可以使用该-x
参数。帮助文件给出了这个使用示例-x
:
7z a -tzip archive.zip *.txt -x!temp.*
Run Code Online (Sandbox Code Playgroud)
这非常适合排除文件。但是,同样,我想排除通配符指定的文件夹。在我的“FolderToArchive”有多个文件夹,这些文件夹下有可能会或可能不会bin\
和obj\
文件夹。我不想将这些包含在存档中。
我试过这样的模式
-x!bin\*
-x!bin\*.*
-x!\bin\*
-x!\bin\*.*
-x!\\bin\\*
-x!\\bin\\*.*
Run Code Online (Sandbox Code Playgroud)
似乎没有排除该bin\
文件夹。这仅仅是 7zip 的限制吗?
hea*_*vyd 176
要递归排除bin和obj文件夹,您可以使用以下命令:
7z.exe a -t7z archive.7z FolderToArchive\ -mx0 -xr!bin -xr!obj
Run Code Online (Sandbox Code Playgroud)
小智 21
为避免错误,请小心使用 -r 或 -xr。
假设您有以下目录:
.\path1\path2\bin
.\path1\path2\src
.\path3\path4\path5\bin
.\path3\path4\path5\src
Run Code Online (Sandbox Code Playgroud)
并运行命令:
7z a -t7z archive.7z .\path1\path2 .\path3\path4\path5 -xr!bin
Run Code Online (Sandbox Code Playgroud)
你在archive.7z中得到了什么:
.\path2\src
.\path5\src
Run Code Online (Sandbox Code Playgroud)
也就是说,.\path2\
和.\path5\
成为archive.7z 中的顶级文件夹,两个bin
目录都被排除在外。
-x 仅支持相对于存档中顶级文件夹的路径/文件名。
因此,如果您只想排除.\path1\path2\bin
,但要包含所有其他“bin”目录,则命令应如下所示:
7z a -t7z archive.7z .\path1\path2 .\path3\path4\path5 -x!path2\bin
Run Code Online (Sandbox Code Playgroud)
我尝试在 -x 中使用绝对路径,但从未成功。
更新:
-spf
7z 中有一个适用于 Linux的选项,可以使用绝对路径。
根据Marco 的说法,-spf
也可以从 7-zip 15.14 开始在 Windows 上使用