PowerShell 正则表达式批量替换文件名
PowerShell Regex Bulk Replace Filenames
我正在尝试替换给定文件夹中的文件名,但在 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")
}
任何帮助将不胜感激。
您需要替换中的美元来通过字符串中的 PowerShell 变量扩展,并在到达正则表达式引擎时保持美元符号。
目前 "C-00"
变为 "C-00"
,所有文件都将使用相同的名称。
你需要用反引号转义它
"C-00`"
或使用单引号 'C-00'
我正在尝试替换给定文件夹中的文件名,但在 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")
}
任何帮助将不胜感激。
您需要替换中的美元来通过字符串中的 PowerShell 变量扩展,并在到达正则表达式引擎时保持美元符号。
目前 "C-00"
变为 "C-00"
,所有文件都将使用相同的名称。
你需要用反引号转义它
"C-00`"
或使用单引号 'C-00'