Sen bir arada kullanabilir pwd
, Join-Path
ve [System.IO.Path]::GetFullPath
bir tam genişletilmiş yol alır.
Yana cd
( Set-Location
) basitçe PowerShell bağlamda anlamak olmayan bir .NET API göreceli bir dosya adı geçen süreç Geçerli çalışma dizini değişmez böyle başlangıç çalışma dışı esaslı bir yola çözülmesi gibi istenmeyen yan etkileri olabilir dizin (mevcut konumunuz değil).
Yaptığınız şey, önce yolunuzu nitelemek:
Join-Path (Join-Path (pwd) fred\frog)
Bu, (mevcut konumum göz önüne alındığında):
C:\WINDOWS\system32\fred\frog\..\frag
Mutlak bir temel ile, .NET API'yi çağırmak güvenlidir GetFullPath
:
[System.IO.Path]::GetFullPath((Join-Path (Join-Path (pwd) fred\frog) '..\frag'))
Bu size tam nitelikli yolu ve ..
kaldırılmış yolu verir :
C:\WINDOWS\system32\fred\frag
Kişisel olarak da karmaşık değil, bunun için harici komut dosyalarına bağlı çözümleri küçümsüyorum, basit bir problem tarafından oldukça uygun bir şekilde çözüldü Join-Path
ve pwd
( GetFullPath
sadece güzelleştirmek için). Sadece göreceli kısmı korumak istiyorsanız , sadece ekleyin .Substring((pwd).Path.Trim('\').Length + 1)
ve tamamlayın!
fred\frag
GÜNCELLEME
En C:\
uç durumu işaret ettiği için @Dangph'a teşekkürler .