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

修改PowerShell的Append-TFSPath函数,实现前缀添加字符串功能

修改PowerShell函数Append-TFSPath实现前缀添加功能

需求说明

原有Append-TFSPath函数用于在路径末尾追加database/,现需调整为在文件名开头添加指定前缀,默认前缀为database/,需满足以下场景:

  • 输入纯文件名:Tagging_Domain_Stored%20Procedures_TP_PullOMSDataJobSPs.sql → 输出:database/Tagging_Domain_Stored%20Procedures_TP_PullOMSDataJobSPs.sql
  • 输入带前置斜杠的文件名:/Tagging_Domain_Stored%20Procedures_TP_PullOMSDataJobSPs.sql → 输出:database/Tagging_Domain_Stored%20Procedures_TP_PullOMSDataJobSPs.sql
  • 输入已包含/database的路径 → 输出保持database/[原文件名]格式(去重并统一前缀)

原有函数代码

function Append-TFSPath {
    [CmdletBinding()]
    param (
        [parameter(Mandatory = $true, Position = 0, ValueFromPipeline = $true)]
        [ValidateNotNullOrEmpty()]
        [string] $Path,
        [parameter(Mandatory = $false, Position = 1)]
        [string] $ChildPath = 'database',
        [char]$Separator = '/'
    )
    $Path = $Path -replace '[\\/]+$'  # trim off final slash(es)
    $ChildPath = $ChildPath -replace '^[\\/]|[\\/]$' -replace '\\', $Separator
    if ([string]::IsNullOrWhiteSpace($ChildPath) -or ($Path -replace '\\', $Separator) -like "*$ChildPath") {
        "{0}$separator" -f $Path
    }
    else {
        "{0}$separator{1}$Separator" -f $Path, $ChildPath
    }
}

修改后的函数代码

function Append-TFSPath {
    [CmdletBinding()]
    param (
        [parameter(Mandatory = $true, Position = 0, ValueFromPipeline = $true)]
        [ValidateNotNullOrEmpty()]
        [string] $Path,
        [parameter(Mandatory = $false, Position = 1)]
        [string] $Prefix = 'database',
        [char]$Separator = '/'
    )
    # 清理输入路径:移除开头的所有斜杠,统一分隔符格式
    $cleanedPath = $Path -replace '^[\\/]+' -replace '\\', $Separator
    # 清理前缀:移除前后斜杠,统一分隔符格式
    $cleanedPrefix = $Prefix -replace '^[\\/]|[\\/]$' -replace '\\', $Separator
    
    # 检查路径是否已包含目标前缀(前缀+分隔符开头)
    if ($cleanedPath -like "$cleanedPrefix$Separator*") {
        # 已存在前缀,直接返回标准格式
        "{0}{1}{2}" -f $cleanedPrefix, $Separator, $cleanedPath.Substring("$cleanedPrefix$Separator".Length)
    }
    else {
        # 不存在前缀,添加后返回
        "{0}{1}{2}" -f $cleanedPrefix, $Separator, $cleanedPath
    }
}

关键改动说明

  1. 参数名从ChildPath改为Prefix,贴合当前前缀添加的语义
  2. 输入路径处理:移除开头冗余斜杠,确保文件名部分纯净
  3. 前缀检查逻辑:判断路径是否已以前缀+分隔符开头,避免重复添加
  4. 输出格式统一:始终返回前缀/文件名的标准结构,无需额外末尾斜杠

测试示例

# 场景1:纯文件名输入
$name1 = "Tagging_Domain_Stored%20Procedures_TP_PullOMSDataJobSPs.sql"
Append-TFSPath $name1
# 输出:database/Tagging_Domain_Stored%20Procedures_TP_PullOMSDataJobSPs.sql

# 场景2:带前置斜杠的输入
$name2 = "/Tagging_Domain_Stored%20Procedures_TP_PullOMSDataJobSPs.sql"
Append-TFSPath $name2
# 输出:database/Tagging_Domain_Stored%20Procedures_TP_PullOMSDataJobSPs.sql

# 场景3:已包含前缀的输入
$name3 = "database/Tagging_Domain_Stored%20Procedures_TP_PullOMSDataJobSPs.sql"
Append-TFSPath $name3
# 输出:database/Tagging_Domain_Stored%20Procedures_TP_PullOMSDataJobSPs.sql

# 场景4:自定义前缀
$name4 = "TestFile.sql"
Append-TFSPath $name4 -Prefix "custom/path"
# 输出:custom/path/TestFile.sql

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 19:20:53