functions/common/ConvertTo-RelativePath.ps1
function ConvertTo-RelativePath { param ( [Parameter(Mandatory = $true)] [string]$AbsolutePath, [Parameter(Mandatory = $true)] [string]$BasePath ) # Convert both paths to full paths and resolve any relative elements $absolutePath = [System.IO.Path]::GetFullPath($AbsolutePath) $basePath = [System.IO.Path]::GetFullPath($BasePath) # Ensure the base path ends with a directory separator if (-not $basePath.EndsWith([System.IO.Path]::DirectorySeparatorChar)) { $basePath += [System.IO.Path]::DirectorySeparatorChar } # Create a Uri object for both paths $absoluteUri = New-Object System.Uri($absolutePath) $baseUri = New-Object System.Uri($basePath) # Get the relative Uri from the base Uri $relativeUri = $baseUri.MakeRelativeUri($absoluteUri) # Convert the relative Uri to a string and return it return $relativeUri.OriginalString } # Example usage # $absolutePath = "C:\Users\ExampleUser\Documents\Project\File.txt" # $basePath = "C:\Users\ExampleUser\Documents" # $relativePath = ConvertTo-RelativePath -AbsolutePath $absolutePath -BasePath $basePath # Write-Output $relativePath |