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

如何获取嵌套Hashtable的指定键值并用于文件命名?

PowerShell哈希表嵌套值提取与文件复制解决方案

核心实现思路

要处理数量不固定的外层哈希表条目,需通过枚举遍历所有键值对,提取嵌套哈希表中Long键对应的字符串作为文件名,同时处理文件名非法字符后执行复制操作。

完整代码示例

# 定义目标目录(替换为你的实际路径)
$targetDirectory = "C:\Your\Target\Directory"

# 确保目标目录存在,不存在则创建
if (-not (Test-Path -Path $targetDirectory)) {
    New-Item -ItemType Directory -Path $targetDirectory | Out-Null
}

# 遍历哈希表的所有键值对
foreach ($entry in $Hash.GetEnumerator()) {
    # 提取嵌套哈希表中Long键的值
    $longText = $entry.Value['Long']
    
    # 跳过空值,避免生成无效文件名
    if ([string]::IsNullOrWhiteSpace($longText)) {
        continue
    }

    # 替换Windows文件名非法字符为下划线
    $validFileName = $longText -replace '[:\/\*\?"<>|]', '_'
    # 拼接完整的目标文件路径
    $targetFilePath = Join-Path -Path $targetDirectory -ChildPath "$validFileName.svg"

    # 执行复制操作(替换为你的源SVG文件路径)
    Copy-Item -Path "C:\Your\Source\File.svg" -Destination $targetFilePath
}

关键细节说明

  • 遍历哈希表:使用$Hash.GetEnumerator()枚举所有条目,无论外层键数量多少都能覆盖。
  • 嵌套值访问:通过$entry.Value['Long']直接获取嵌套哈希表的目标值,注意键名拼写需与哈希表中一致(默认不区分大小写,但建议严格匹配)。
  • 文件名合法性处理:正则表达式-replace '[:\/\*\?"<>|]', '_'替换Windows禁止的文件名字符,避免复制操作报错。
  • 异常防护:添加目录检查和空值判断,减少运行时错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 01:36:34