Powershell 7zip(7za)排除文件类型

时间:2012-02-23 15:49:29

标签: powershell 7zip

如何在排除某些文件类型的同时使用powershell和7zip(7za.exe)来压缩文件夹?

我试过了:

cd "C:\path\to\folder to zip"
7za.exe a "C:\path\to\newZip.zip" -mx3 -x!*.txt -x!*.pdf

但是回归:

.txt:  WARNING: The system cannot find the file specified.

.pdf:  WARNING: The system cannot find the file specified.

并且不会压缩任何内容 - 只创建一个空的ZIP文件。

我也试过这个:

cd "C:\path\to\folder to zip"
Get-ChildItem "C:\path\to\folder to zip" -Recurse -Exclude *.txt, *.pdf | 7za.exe a -mx3 "C:\path\to\newZip.zip" $_.FullName

但是将ZIP中的所有内容压缩到“C:\ path \ to \ folder to zip”文件夹而不是排除任何内容..

感谢您提供任何帮助。

-Jim

1 个答案:

答案 0 :(得分:0)

你的第二次尝试几乎是正确的。

调用7-zip的命令需要包含在for-each块中,否则$_.FullName将被解析为空字符串并且7-zip(在没有输入参数的情况下)会自动拉伸所有内容在目录中。所以改成它:

Get-ChildItem "C:\path\to\folder to zip" -Recurse -Exclude *.txt, *.pdf | %{7za.exe a -mx3 "C:\path\to\newZip.zip" $_.FullName}

请注意%是foreach-object的别名。