在Powershell的-Replace参数中转义括号不起作用

问题描述 投票:0回答:1

我想重命名此文件:

Howard -((TV) )RED HEADED LEAGUE.mp4

为此:

Howard - (TV) RED HEADED LEAGUE.mp4

因为-Replace Powershell命令需要正则表达式正则表达式,所以我这样做是为了重命名文件:

Get-ChildItem | Rename-Item -NewName {$_.name -replace '\(\(TV\) \)',' \(TV\) '}

但是,输出此错误:

Cannot rename the specified target, because it represents a path or device name.

并且按照Google的建议,用反斜杠转义括号,不会输出错误,但不会重命名文件:

Get-ChildItem | Rename-Item -NewName {$_.name -replace '`(`(TV`) `)',' `(TV`) '}

我该如何进行这项工作?谢谢。

powershell recursion file-rename
1个回答
0
投票

如评论中所述,替换字符串(-replace的第二个右侧参数)不需要转义!

逐字放置在字符串中,因此示例中的结果文件名变为Howard - \(TV\) RED HEADED LEAGUE.mp4-这就是文件系统抱怨\不是有效的文件名字符的原因。

如果您只是这样做:

{$_.Name -replace '\(\(TV\) \)',' (TV) '}

...它将起作用:)

© www.soinside.com 2019 - 2024. All rights reserved.