我正在尝试替换给定文件夹中的文件名,但在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")
}
非常感谢任何帮助。
答案 0 :(得分:2)
您需要替换中的美元才能通过字符串中的PowerShell变量扩展,并在进入正则表达式引擎时保持美元符号。
目前"C-00$1"
变为"C-00"
,所有文件都将获得相同的名称。
你需要用反引号来逃避它
"C-00`$1"
或使用单引号'C-00$1'