2012-09-12 22 views
17

Mi piacerebbe convertire un percorso in un percorso relativo in uno script PowerShell. Come faccio a utilizzare PowerShell?Come convertire il percorso assoluto nel percorso relativo in PowerShell?

Ad esempio:

Path to convert: c:\documents\mynicefiles\afile.txt 
Reference path: c:\documents 
Result:   mynicefiles\afile.txt 

E

Path to convert: c:\documents\myproject1\afile.txt 
Reference path: c:\documents\myproject2 
Result:   ..\myproject1\afile.txt 

risposta

38

Ho trovato qualcosa di costruito in, Resolve-Path:

Resolve-Path -Relative 

Questo restituisce il percorso relativo alla posizione corrente. Un semplice utilizzo:

$root = "C:\Users\Dave\" 
$current = "C:\Users\Dave\Documents\" 
$tmp = Get-Location 
Set-Location $root 
Resolve-Path -relative $current 
Set-Location $tmp 
+14

Anziché utilizzare una variabile temporanea, è anche possibile utilizzare Push-Location e Pop-Location per impostare la posizione e quindi ripristinare il valore originale. La stessa soluzione di base ma senza la variabile temporanea. –

1

Get-RelativePath sembra essere un modo per farlo.

+0

Ma sembra terribilmente complicato e lento. Non c'è un modo migliore per farlo? –

+1

Complicated slow and buggy. –

+0

Il collegamento non è più attivo – Honzajscz

-1

Ecco un approccio alternativo

$pathToConvert1 = "c:\documents\mynicefiles\afile.txt" 
$referencePath1 = "c:\documents" 
$result1 = $pathToConvert1.Substring($referencePath1.Length + 1) 
#$result1: mynicefiles\afile.txt 


E

$pathToConvert2 = "c:\documents\myproject1\afile.txt" 
#$referencePath2 = "c:\documents\myproject2" 
$result2 = "..\myproject" + [regex]::Replace($pathToConvert2 , ".*\d+", '') 
#$result2:   ..\myproject\afile.txt 

Nota: nel secondo percorso caso ref non è stato utilizzato.

+0

Penso che tu abbia frainteso i due esempi. Voglio un approccio per risolvere entrambi. –

+0

Sì, ho frainteso il tuo esempio poiché punta al percorso assoluto del file. – yantaq

+0

Non l'OP, ma questo è quello che stavo cercando per risolvere il mio problema. Grazie –

Problemi correlati