You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编写PowerShell脚本:匹配配置文件路径并归档至Zip

PowerShell脚本实现从XML配置提取路径并备份归档

以下是满足需求的完整PowerShell脚本,附带详细说明:

# 配置参数,请根据实际环境修改
$configPath = "C:\path\to\your\config.xml"  # 替换为你的XML配置文件路径
$targetKeys = @("TlgxDir")  # 可添加多个key,例如@("TlgxDir", "LogDir")
$backupRoot = "C:\temp\backup"
$zipPath = "C:\temp\backup.zip"

# 创建备份根目录(不存在则自动创建)
if (-not (Test-Path -Path $backupRoot)) {
    New-Item -Path $backupRoot -ItemType Directory | Out-Null
}

# 读取XML配置文件
$configXml = [xml](Get-Content -Path $configPath -Encoding UTF8)

# 遍历目标key,提取路径并执行复制
foreach ($key in $targetKeys) {
    $node = $configXml.SelectSingleNode("//add[@key='$key']")
    if ($node -and $node.value) {
        $sourcePath = $node.value
        # 校验源路径有效性
        if (Test-Path -Path $sourcePath) {
            $destFolderName = Split-Path -Path $sourcePath -Leaf
            $destPath = Join-Path -Path $backupRoot -ChildPath $destFolderName
            # 递归复制文件夹及所有子内容
            Copy-Item -Path $sourcePath -Destination $destPath -Recurse -Force
            Write-Host "已完成复制:$sourcePath -> $destPath"
        } else {
            Write-Warning "警告:源路径不存在 - $sourcePath"
        }
    } else {
        Write-Warning "警告:配置文件中未找到key为 '$key' 的节点"
    }
}

# 将备份目录归档为ZIP文件
if (Test-Path -Path $backupRoot) {
    Compress-Archive -Path "$backupRoot\*" -DestinationPath $zipPath -Force
    Write-Host "归档完成,ZIP文件路径:$zipPath"
} else {
    Write-Warning "警告:备份目录为空或不存在,跳过归档操作"
}

脚本关键部分说明

1. 参数配置区

开头的变量均为可自定义项:

  • $configPath:XML配置文件的绝对路径
  • $targetKeys:支持同时提取多个key对应的目录,用数组形式添加即可
  • $backupRoot:所有备份文件夹的统一存放目录
  • $zipPath:最终生成的归档文件路径

2. XML节点定位

通过XPath表达式//add[@key='$key']精准匹配配置文件中指定key的节点,直接提取value属性中的路径,避免字符串匹配的不稳定问题。

3. 复制与归档逻辑

  • 复制前自动校验源路径是否存在,避免无效操作
  • 用源文件夹名称作为备份目录的子文件夹名,防止多目录复制时冲突
  • Copy-Item的-Recurse参数确保复制所有子文件夹和文件,-Force覆盖已存在的文件
  • Compress-Archive的-Force参数会覆盖已存在的ZIP文件

注意事项

  • 确保PowerShell拥有读取配置文件、访问源文件夹、写入备份目录的权限
  • 如果配置文件编码不是UTF8,可调整Get-Content的-Encoding参数为Default或Unicode
  • 路径包含空格时脚本会自动处理,无需额外转义

内容的提问来源于stack exchange,提问作者XavierJC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 01:10:32