在PowerShell中使用加号重命名文件

时间:2017-10-06 06:25:29

标签: regex windows powershell special-characters rename

当我从dropbox下载了一堆文件时,所有瑞典字符ä都变为+ñ。我想把这个+ñ替换为ä。

我的命令如下:

Get-ChildItem -Filter "*+ñ*" -Recurse | Rename-Item -NewName {$_.name -replace '"+ñ"','ä'}

但运行此命令会收到以下错误消息:

Rename-Item : The input to the script block for parameter 'NewName' failed. Invalid regular expression pattern: +ñ.
At line:1 char:60
+ Get-ChildItem -Filter "*+ñ*" -Recurse| Rename-Item -NewName <<<<  {$_.name -replace $str1,"ä"}
+ CategoryInfo          : InvalidArgument: (S+ñker.txt:PSObject) [Rename-Item], ParameterBindingException
+ FullyQualifiedErrorId : ScriptBlockArgumentInvocationFailed,Microsoft.PowerShell.Commands.RenameItemCommand

所以我把它归结为+字符就是问题所在。如何处理未在PowerShell中自动处理的+和其他类型的字符?

1 个答案:

答案 0 :(得分:4)

-replace运算符执行 regex 搜索。由于+是量词,因此您必须使用反斜杠 逃避

Get-ChildItem -Filter "*+ñ*" -Recurse | Rename-Item -NewName {$_.name -replace '"\+ñ"','ä'}

您还可以使用非正则表达式版本:

Get-ChildItem -Filter "*+ñ*" -Recurse | Rename-Item -NewName {$_.name.replace('"+ñ"','ä')}