Skip to content

Instantly share code, notes, and snippets.

@ldfallas
Created March 16, 2012 14:57
Show Gist options
  • Save ldfallas/2050428 to your computer and use it in GitHub Desktop.
Save ldfallas/2050428 to your computer and use it in GitHub Desktop.
function CalculateRelative($path,$pathRelative)
{
$parts1 = ($path.ToString()).Split("\")
$parts2 = ($pathRelative.ToString()).Split("\")
$prefixEqual = 0
$min = [Math]::Min($parts1.Length, $parts2.Length)
$continue = $true
while($prefixEqual -lt $min)
{
if ($parts1[$prefixEqual] -ne $parts2[$prefixEqual])
{
break
}
$prefixEqual = $prefixEqual + 1
}
$firstPartCount = $parts1.Length - $prefixEqual
if ($firstPartCount -gt 0)
{
$p1 = [string]::Join("\", (1..$firstPartCount | % { ".."} ))
}
else
{
$p1 = ""
}
$secondPartCount = $parts2.Length - $prefixEqual
if ($secondPartCount -gt 0)
{
$p2 = [string]::Join("\", $parts2, $prefixEqual, $secondPartCount)
}
else
{
$p2 = ""
}
return [IO.Path]::Combine( $p1, $p2 )
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment