在 Powershell 的 -Replace 参数中转义括号不起作用
Escaping a parenthesis in Powershell's -Replace parameter not working
我想重命名这个文件:
Howard -((TV) )RED HEADED LEAGUE.mp4
为此:
Howard - (TV) RED HEADED LEAGUE.mp4
因为 -Replace Powershell 命令需要 regex 正则表达式,所以我这样做是为了重命名文件:
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`) '}
我怎样才能完成这项工作?谢谢。
如评论中所述,替换字符串(-replace
的第二个右侧参数)不需要转义!
替代品逐字放置在字符串中,因此您的示例中生成的文件名变为 Howard - \(TV\) RED HEADED LEAGUE.mp4
- 这就是文件系统抱怨的原因,\
不是有效的文件名字符。
如果你只是这样做:
{$_.Name -replace '\(\(TV\) \)',' (TV) '}
...它会起作用 :)
我想重命名这个文件:
Howard -((TV) )RED HEADED LEAGUE.mp4
为此:
Howard - (TV) RED HEADED LEAGUE.mp4
因为 -Replace Powershell 命令需要 regex 正则表达式,所以我这样做是为了重命名文件:
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`) '}
我怎样才能完成这项工作?谢谢。
如评论中所述,替换字符串(-replace
的第二个右侧参数)不需要转义!
替代品逐字放置在字符串中,因此您的示例中生成的文件名变为 Howard - \(TV\) RED HEADED LEAGUE.mp4
- 这就是文件系统抱怨的原因,\
不是有效的文件名字符。
如果你只是这样做:
{$_.Name -replace '\(\(TV\) \)',' (TV) '}
...它会起作用 :)