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

Posted

技术标签:

【中文标题】在 PowerShell 中使用加号重命名文件【英文标题】:Renaming files with a plus sign in PowerShell 【发布时间】:2018-03-17 21:26:30 【问题描述】:

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

【问题讨论】:

【参考方案1】:

-replace 运算符执行 regex 搜索。由于+ 是一个量词,您必须使用 反斜杠 转义它:

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

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

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

【讨论】:

备案,“非正则表达式版本”为.NET String.Replace()

以上是关于在 PowerShell 中使用加号重命名文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 Powershell 递归重命名文件

如果文件存在,Powershell 移动项目重命名

使用 PowerShell 重命名 FTP 上的文件

使用 PowerShell 重命名 zip 以匹配其内容

PowerShell重命名文件夹中的文件For循环错误

Powershell 文件重命名语法