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

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

最佳答案

-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/

相关文章:

powershell - 搜索邮箱命令无法识别 Exchange 2010 sp1 powershell

regex - 正则表达式不匹配特定字符串

java - Windows:从 32 位 Java 运行 reg 命令时取消 WOW6432Node 注册表项映射

powershell - 有人可以解释 Powershell 的这种奇怪的 PSObject + 添加成员行为吗?

python - 如何更改python中指针的位置?

windows - 使用 Windows 搜索以 jsp 结尾的文件

powershell - 从 CSV 文件的字符串列中删除换行符

javascript - 如何编写正确的正则表达式以便 JSLint 进行验证?

c++ - 使用 C++ 解析 robots.txt 文件

c - 如何在字符数组C中使用正则表达式