Как преобразовать абсолютный путь в относительный путь в PowerShell?
Я хотел бы преобразовать путь в относительный путь в PowerShell script.
Как это сделать с помощью PowerShell?
Например:
Path to convert: c:\documents\mynicefiles\afile.txt
Reference path: c:\documents
Result: mynicefiles\afile.txt
и
Path to convert: c:\documents\myproject1\afile.txt
Reference path: c:\documents\myproject2
Result: ..\myproject1\afile.txt
Ответы
Ответ 1
Я нашел что-то встроенное, Resolve-Path:
Resolve-Path -Relative
Возвращает путь относительно текущего местоположения. Простое использование:
$root = "C:\Users\Dave\"
$current = "C:\Users\Dave\Documents\"
$tmp = Get-Location
Set-Location $root
Resolve-Path -relative $current
Set-Location $tmp
Ответ 2
Get-RelativePath, похоже, способ сделать это.
Ответ 3
Вот альтернативный подход
$pathToConvert1 = "c:\documents\mynicefiles\afile.txt"
$referencePath1 = "c:\documents"
$result1 = $pathToConvert1.Substring($referencePath1.Length + 1)
#$result1: mynicefiles\afile.txt
И
$pathToConvert2 = "c:\documents\myproject1\afile.txt"
#$referencePath2 = "c:\documents\myproject2"
$result2 = "..\myproject" + [regex]::Replace($pathToConvert2 , ".*\d+", '')
#$result2: ..\myproject\afile.txt
Примечание: во втором случае путь ссылки не использовался.