如何在Powershell中逃避反斜杠

时间:2018-04-23 08:15:11

标签: powershell escaping

我有一个带路径名的文本文档,我想删除每个" C:\"。 我尝试使用

get-content file.txt | %{$_-replace 'C:\', ""}

我收到错误,字符串无效。

然后我尝试了严肃的口音:

get-content file.txt | %{$_-replace 'C:`\', ""}

还有单引号:

get-content file.txt | %{$_-replace "C:'\'", ""}

似乎"逃避" Powershell的角色不会在这个角色上工作。

3 个答案:

答案 0 :(得分:2)

正斜杠/

应该没有任何问题

\是正则表达式的特例(我的意思是-match-notmatch-replace使用的模式),使用\\来匹配那个角色。

%{$_-replace 'C:\\', ""}

这是因为正则表达式使用反斜杠作为特殊字符,例如\s表示任何空白字符,\d表示任何数字。

答案 1 :(得分:2)

要添加到kubanczyk的答案,另一种方法是使用Regex Escape method

例如:

%{$_-replace [regex]::Escape("C:\"), ""}

这将转义字符串中的任何特殊字符。

答案 2 :(得分:1)

这是Split-Path -NoQualifer参数的目的之一。

PS C:\> "C:\Windows\Notepad.exe" | Split-Path -NoQualifier
\Windows\notepad.exe