在Windows PowerShell中更改路径分隔符

20

如何使PowerShell始终输出/而非\?例如,我希望get-location的输出为C:/ Documents and Settings / Administrator。

更新

感谢提供使用replace的示例,但我希望此更改在全局范围内生效(例如,制表符完成等)。根据Matt的观察,分隔符由System.IO.Path.DirectorySeparatorChar定义,该分隔符在实践中和文档中均为只读,我猜这不可能实现。

3个回答

13

这是一个好问题。底层的.NET框架将其表述为System.IO.Path.DirectorySeparatorChar,它是一个读/写属性,因此我认为您可以这样做:

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

...看起来运行成功了,但如果您输入以下内容:

[IO.Path]::DirectorySeparatorChar

...它告诉你它仍然是'\'。就像它没有"接管"一样。唉,我甚至不确定PowerShell是否会尊重那个特定的值,即使它正在改变。

我想我会发布这个(冒着它实际上没有回答你的问题的风险),以防它能帮助其他人找到真正的答案。我确信这与DirectorySeparatorChar字段有关。


有没有办法只将此应用于单个 Split-Path 命令?(使其返回斜杠而不是反斜杠。) - Martin Thøgersen
7
更新:现在DirectorySeparatorChar是只读属性。 尝试将[IO.Path]::DirectorySeparatorChar = '/'更改为斜杠时,会返回相应的错误消息。 - axmrnv

9

将“\”替换为“/”。

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

2
这并没有回答楼主的问题。 - sancho.s ReinstateMonicaCellio

4
您可以创建一个过滤器(或函数),将路径传递给它进行处理:
PS C:\> filter replace-slash {$_ -replace "\\", "/"}
PS C:\> Get-Location | replace-slash
C:/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接