Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Powershell中转义括号';s-替换参数不工作_Powershell_Recursion_File Rename - Fatal编程技术网

在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真棒!这很有效。我没有意识到替换字符串不是正则表达式。(掌心)谢谢。