在Powershell中转义括号';s-替换参数不工作
我想重命名此文件:在Powershell中转义括号';s-替换参数不工作,powershell,recursion,file-rename,Powershell,Recursion,File Rename,我想重命名此文件: Howard-((电视))红发联赛.mp4 为此: 霍华德-(电视)红发联赛mp4 因为-Replace Powershell命令需要正则表达式,所以我这样做是为了重命名文件: Get ChildItem |重命名Item-NewName{$\.name-replace'\(\(TV\)\),'\(TV\)} 但是,输出此错误: 无法重命名指定的目标,因为它表示路径或设备名称。 正如谷歌所建议的那样,用反勾号转义括号不会输出错误,但不会重命名任何文件: Get-ChildIt
Howard-((电视))红发联赛.mp4
为此:
霍华德-(电视)红发联赛mp4
因为-Replace Powershell命令需要正则表达式,所以我这样做是为了重命名文件:
Get ChildItem |重命名Item-NewName{$\.name-replace'\(\(TV\)\),'\(TV\)}
但是,输出此错误:
无法重命名指定的目标,因为它表示路径或设备名称。
正如谷歌所建议的那样,用反勾号转义括号不会输出错误,但不会重命名任何文件:
Get-ChildItem |重命名Item-NewName{$\.name-replace'`(`(TV`)`)`,`(TV`)`}
我怎样才能做到这一点?谢谢。如注释中所述,替换字符串(
-replace
的第二个右侧参数)不需要转义
替换项按原样放入字符串中,因此示例中生成的文件名变为Howard-\(TV\)RED head LEAGUE.mp4
-这就是文件系统抱怨的原因,\
不是有效的文件名字符
如果您只是这样做:
{$_.Name -replace '\(\(TV\) \)',' (TV) '}
。。。它会起作用:)您不需要转义替换字符串:
-替换“\(\(TV\)\”,“(TV)
@MathiasR.Jessen真棒!这很有效。我没有意识到替换字符串不是正则表达式。(掌心)谢谢。