无法使用PowerShell移除文件名中的‘+’符号,求解决方案
解决PowerShell移除文件名中‘+’符号的问题
- 问题出在
-Replace的正则特性:+是正则表达式的元字符,表示匹配前一个元素一次或多次,直接用它替换会被解析为匹配规则,而非字面的+符号,所以替换失效。 - 修正后的两种脚本写法:
- 手动转义
+:
Get-ChildItem -Recurse '*.*' | Rename-Item -NewName { $_.Name -Replace '\+','' }- 自动转义正则元字符(更稳妥,适合含多个特殊字符的场景):
Get-ChildItem -Recurse '*.*' | Rename-Item -NewName { $_.Name -Replace [regex]::Escape('+'),'' } - 手动转义
- 解释:
- 加
\后,\+会被正则引擎识别为字面量+,从而正确匹配并替换为空。 [regex]::Escape()方法会自动处理所有正则特殊字符,不用手动逐个转义,减少出错概率。
- 加
内容的提问来源于stack exchange,提问作者shasabbir
相关产品推荐
相关产品推荐

