在PowerShell中用加号重命名文件

当我从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中未自动处理的+和其他types的字符?

-replace运算符执行正则表达式搜索。 由于+是一个量词,所以你必须使用反斜线转义它:

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

你也可以使用非正则表达式版本:

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