繁体   English   中英

7zip-Powershell排除具有变量的文件/文件夹

[英]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结构。

两件事情:

  1. 如果要扩展变量,请在双引号内使用该变量: sz a "-xr!$exclude" $Target $Source
  2. 使用模式Customer\\Images\\*排除目录Images中的所有文件,但在结果文件中包含一个空目录。 如果您不想包括目录(或其任何文件),请使用Customer\\Images

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM