PowerShell正则表达式批量替换文件名

时间:2018-03-20 21:11:56

标签: regex powershell rename bulk

我正在尝试替换给定文件夹中的文件名,但在PowerShell中使用正则表达式作为过滤器和新文件名。

例如,文件名“CEX-13”应重命名为“C-0013”; “CEX-14”应改为“C-0014”等。

我有这个,但是我收到一个错误,我无法创建已经存在的文件。

我目前的代码是:

foreach ($file in get-childitem | where-object {$_.name -match "^CEX-(\d\d)"})
{
    rename-item $file -newname ($file.name -replace "^CEX-(\d\d)", "C-00$1")
}

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

您需要替换中的美元才能通过字符串中的PowerShell变量扩展,并在进入正则表达式引擎时保持美元符号。

目前"C-00$1"变为"C-00",所有文件都将获得相同的名称。

你需要用反引号来逃避它

"C-00`$1"

或使用单引号'C-00$1'