powershell - 7zip - powershell 排除带变量的文件/文件夹

标签 powershell 7zip

我正在尝试压缩文件夹但使用 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! 标志并将它们用双引号括起来。

#debug 行将结果命令行输出到控制台

我对 7zip 的调用略有不同,方法是使用 7zip 可执行文件创建一个字符串,然后在该字符串路径的调用前加上一个符号。

此方法可以从最终存档中排除多个文件夹,包括folder\subfolder结构。

关于powershell - 7zip - powershell 排除带变量的文件/文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42224894/

相关文章:

Java - 运行 7zip

command-line - 使用 7zip 命令行实用程序解密加密的 7zip 存档文件

powershell - Save-AzureRmProfile 的问题

powershell - 如何使用 Ansible 卸载 Chocolatey 软件包?

java - 如何从 Java 中的 7-zip 流中提取文件而不将其存储在硬盘上?

java - Android 上的 J7zip - 从存档中提取并列出内容

c# - 如何在 C# 中使用 SharpZipLib 提取多卷 zip 文件?

powershell - 在哪里可以找到二进制 DSC 资源的 dll?

arrays - Powershell-如何用数组列表值替换查询结果值

regex - PowerShell RegEx 匹配所有可能的匹配项