使用7z压缩目录中的所有内容,除了一个文件或一个文件类型

Pen*_*rce 12 zip cmd 7zip

除了一个文件,我想要压缩所有内容

7z a -tzip files.zip *
Run Code Online (Sandbox Code Playgroud)

这将压缩我当前目录中的所有文件..有没有办法可以告诉它不压缩一个文件或一个文件类型?

Jos*_*non 20

根据7za命令行帮助,使用-x开关执行此操作:

-x[r[-|0]]]{@listfile|!wildcard}: eXclude filenames
Run Code Online (Sandbox Code Playgroud)

要排除文件foo.txt,您需要添加:

-x!foo.txt
Run Code Online (Sandbox Code Playgroud)

要排除所有.html文件(*.html),您需要添加:

-x!*.html
Run Code Online (Sandbox Code Playgroud)

您可以在一个zip命令中添加多个-x条目以排除多个文件名和/或通配符.添加以下内容将排除foo.txt和*.html:

-x!foo.txt -x!*.html
Run Code Online (Sandbox Code Playgroud)

因此,对于您的示例,这会将所有文件添加到files.zip EXCEPT名为"FILENAME"的文件或与*.extension通配符匹配的文件:

7za a -tzip files.zip * -x!FILENAME -x!*.extension
Run Code Online (Sandbox Code Playgroud)

  • 供将来参考:“-x!*.extension”不起作用(至少对于递归子目录)。`-x!*extension` 确实有效。 (2认同)
  • 在powershell中使用"-xr!*.extension"来递归地忽略所有*.extension.密切关注报价 (2认同)
  • 要在PowerShell中排除与Git相关的文件和文件夹,请添加`" - xr!.git \"`和`" - xr!.gitignore"`.注意@ChrisKolenko提到的双引号(```). (2认同)

shr*_*sha 8

如果您正在使用批处理脚本,请不要忘记转义!标记。

7z a -xr^^!*.xml "dest_dir.zip" "Source_dir"
Run Code Online (Sandbox Code Playgroud)

花了我很长时间才发现:)

谢谢你。