解决相对路径

马蒂亚斯

给定两个任意路径basedestination,我想找到从base的最小相对路径destination

我当前的实现是:

Push-Location $base
try {
    return (Resolve-Path -relative $destination)
} finally {
    Pop-Location
}

但是,这不能满足最小化的要求。例如,给定两个路径C:\A\B\CC:\A\B..\..\B结果是,实际上应该是..值得注意的destination,如果是文件,这确实是最小的,但对于文件夹而言却不是。

我很高兴不做手动截断之类的事情。

马蒂亚斯
function GetRelative($base, $destination) {
    $baseUri = [System.Uri]$($base + '/')
    $destinationUri = [System.Uri]$($destination + '/')
    $relativePath = $baseUri.MakeRelativeUri($destinationUri).OriginalString.TrimEnd('/').Replace('/', '\');
    if ([string]::IsNullOrEmpty($relativePath)) { return "." }
    else { return $relativePath }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章