可能需要用双反斜杠替换字符串(例如文件路径)中的每个反斜杠。例如,
wmic
需要这个(例如:https://stackoverflow.com/a/50878476/4582204)。
所以有人可以尝试这个代码
'foo\bar' -replace '\\', '\\\\'
但是它会产生以下带有 4 个反斜杠的结果:
foo\\\\bar
而不是带有 2 个反斜杠的所需结果:
foo\\bar
为什么?
答案(非常全面)在这里:https://stackoverflow.com/a/64771432/4582204(这个问题可能会作为重复问题被关闭)。
但我想简单快速地说出
-replace regex, replacement
regex
是一个正则表达式,需要两个反斜杠\\
,因为第一个必须转义第二个,但replacement
是字面意思,不需要转义,所以\\\\
不是两个转义的反斜杠而是字面上的4反斜杠。
所以正确的代码是:
'foo\bar' -replace '\\', '\\'
虽然乍一看这段代码似乎什么也没做,但它正在做一些事情,因为第一个反斜杠是转义,第二个术语没有转义。