正则表达式在批量文件重命名中不起作用

Regular Expressions Aren't Working in Bulk File Renaming

我在使用正则表达式时遗漏了一些东西,因为当我替换定义的字符串时我的行有效。我尝试了 \d[0-9]。我忘记了什么?

原版FOOBAR_12345678-0001.csv

目标12345678.csv

get-childitem *.csv | foreach { rename-item $_ $_.Name.Replace("FOOBAR_(\d{8})-\d{4}", "") }

以下对我有用:

get-childitem *.csv | foreach { rename-item $_ ( $_.Name -replace 'FOOBAR_(\d{8})-\d{4}', '') }

为什么:

  1. 我怀疑您使用的 .Replace() 方法不采用正则表达式。
  2. 我不是 100% 确定它是必要的,但我已经习惯使用单引号和 powershell 正则表达式,以防出现任何 shell 扩展恶作剧。