2017-10-06 32 views
2

当我从保存箱中下载了一堆文件时,所有瑞典语字符ä变为+ñ。我想将此+替换为ä。在PowerShell中用加号重命名文件

我的命令如下:

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

但运行此得到follwing错误消息:

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中未自动处理的+和其他类型的字符?

回答

4

-replace运算符执行正则表达式搜索。由于+是你有一个量词来逃生它使用反斜线

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

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

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

根据记录,在“非正则表达式版本“是.NET [String.Replace()](https://msdn.microsoft.com/en-us/library/fk49wtc1(v = vs.110).aspx) – Tomalak

相关问题