2009-04-23 20 views
12

Czy można uzyskać, aby PowerShell zawsze wyprowadzał / zamiast \? Na przykład, chciałbym, aby wyjście get-location było C:/Documents and Settings/Administrator.Zmiana separatora ścieżek w Windows PowerShell

Aktualizacja

Dzięki za przykładami zastosowania zastąpić, ale liczyłem na to się stało globalnie (na przykład zakończenie zakładki, etc.). Na podstawie obserwacji Matta, że ​​separator jest zdefiniowany przez System.IO.Path.DirectorySeparatorChar, który pojawia się w praktyce i z dokumentacji, która ma być tylko do odczytu, domyślam się, że nie jest to możliwe.

Odpowiedz

6

To jest dobre pytanie. Instrumentu bazowego NET powierzchnie to jako System.IO.Path.DirectorySeparatorChar, i to jest do odczytu/zapisu nieruchomość, więc pomyślałem, można to zrobić:

[IO.Path]::DirectorySeparatorChar = '/' 

... i to wydaje się uda, z wyjątkiem przypadku, następnie wpisz:

[IO.Path]::DirectorySeparatorChar 

... informuje, że nadal "\". To tak, jakby to nie było "chwytanie". Heck, nie jestem nawet pewien, czy PowerShell honoruje tę szczególną wartość, nawet jeśli się zmienia.

Pomyślałem, że opublikuję to (na ryzyko, że tak naprawdę nie odpowiem na twoje pytanie) na wypadek, gdyby pomogło komuś znaleźć prawdziwą odpowiedź. Jestem pewien, że byłoby to coś związanego z tym polem DirectorySeparatorChar.

+0

Czy istnieje sposób zastosowania tego tylko do pojedynczego polecenia Split-Path? (Zwracając ukośnik zamiast ukośnika odwrotnego.) –

7

Zamień "\" na "/".

PS C:\Users\dance2die> $path = "C:\Documents and Settings\Administrator" 
PS C:\Users\dance2die> $path.Replace("\", "/") 
C:/Documents and Settings/Administrator 
2

Można utworzyć filtr (lub funkcja), który można rura swoje ścieżki do:

PS C:\> filter replace-slash {$_ -replace "\\", "/"} 
PS C:\> Get-Location | replace-slash 
C:/ 
Powiązane problemy