从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中无法自动处理的字符?
最佳答案
-replace
运算符进行正则表达式搜索。由于+
是量词,因此您必须使用反斜杠对其进行转义:
Get-ChildItem -Filter "*+ñ*" -Recurse | Rename-Item -NewName {$_.name -replace '"\+ñ"','ä'}
您还可以使用非正则表达式版本:
Get-ChildItem -Filter "*+ñ*" -Recurse | Rename-Item -NewName {$_.name.replace('"+ñ"','ä')}
关于regex - 在PowerShell中使用加号重命名文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46599526/