修改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 } }
关键改动说明
- 参数名从
ChildPath改为Prefix,贴合当前前缀添加的语义 - 输入路径处理:移除开头冗余斜杠,确保文件名部分纯净
- 前缀检查逻辑:判断路径是否已以
前缀+分隔符开头,避免重复添加 - 输出格式统一:始终返回
前缀/文件名的标准结构,无需额外末尾斜杠
测试示例
# 场景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
相关产品推荐
相关产品推荐

