2017-10-06 5 views
2

Lorsque j'ai téléchargé un tas de fichiers à partir de la boîte de dépôt, tout le caractère suédois ä devient + ñ. Je voudrais remplacer ce + ñ par ä.Renommage de fichiers avec un signe plus dans PowerShell

Ma commande est la suivante:

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

Mais l'exécution de ce obtient le message d'erreur 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 

Je l'ai fait bouillir jusqu'à le caractère + est le problème. Comment gérer les caractères + et autres qui ne sont pas gérés automatiquement dans PowerShell?

Répondre

4

L'opérateur -replace effectue une recherche regex. Depuis + est un quantificateur vous devez échapper à l'aide d'une barre oblique inverse :

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

Vous pouvez également utiliser la version non regex:

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

Pour mémoire, la « version non-regex "est .NET [String.Replace()] (https://msdn.microsoft.com/en-us/library/fk49wtc1 (v = vs.110) .aspx) – Tomalak