[英]7zip - powershell exclude files/folders with variable
我正在尝试压缩文件夹,但使用powershell排除多个目录。
我得到以下内容:
if (-not (test-path "$env:ProgramFiles\7-Zip\7z.exe")) {throw "$env:ProgramFiles\7-Zip\7z.exe needed"}
set-alias sz "$env:ProgramFiles\7-Zip\7z.exe"
$Source = "D:\Zip\*"
$Target = "D:\backup.7z"
$exclude = 'Customer\Images\*'
sz a -xr!'$Customer\Images\*' $Target $Source
这可以正常工作。但是当我想要更改-xr!
-xr!'$exclude'
或-xr!$exclude
出于某种原因停止工作。 上面分配的变量不会解析吗?
尝试这个...
if (-not (Test-Path "$env:ProgramFiles\7-Zip\7z.exe")) {throw "$env:ProgramFiles\7-Zip\7z.exe needed"}
$7ZipPath = "$env:ProgramFiles\7-Zip\7z.exe"
$Source = "D:\Zip\*"
$Target = "D:\backup.7z"
$foldersToExclude = 'folder1', 'folder2'
$7zipParams = @('a',$Target)
@($foldersToExclude) | ForEach-Object { $7zipParams += "`"-xr!$_`"" }
$7zipParams += $Source
Write-Host ($7ZipPath+' '+$7zipParams -join ' ') # debug - show the command line
&$7ZipPath $7zipParams
我们创建了一组参数以传递到7zip中,包括排除的文件夹。 在添加排除的文件夹时,我们在文件夹名称前加上-xr!
标志并将它们包装在双qoutes中。
#debug
行将结果命令行输出到控制台
通过使用7zip可执行文件创建一个字符串,然后在调用该字符串路径的前面加上一个&号,我对您使用的7zip稍有不同。
此方法可以从最终存档中排除多个文件夹,包括folder\\subfolder
结构。
两件事情:
sz a "-xr!$exclude" $Target $Source
Customer\\Images\\*
排除目录Images
中的所有文件,但在结果文件中包含一个空目录。 如果您不想包括目录(或其任何文件),请使用Customer\\Images
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.