Подтвердить что ты не робот

Как преобразовать абсолютный путь в относительный путь в 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
4b9b3361

Ответ 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

Примечание: во втором случае путь ссылки не использовался.