使用powershell DMY更改文件名 - >年月日

时间:2017-08-24 22:34:25

标签: regex windows powershell date powershell-v2.0

我必须更改Windows计算机上的很多文件,我将使用Powershell来完成它。

文件名类似于name_name_DDMMYYYY_XXXXXX.bmp

  • John_Doe_03062009_123456.bmp
  • John_Doe_27122016_567890.bmp

我想将它排序为name_name_YYYYMMDD_XXXXXX.bmp

  • John_Doe_20090603_123456.bmp
  • John_Doe_20161227_567890.bmp

我在Powershell中完全不成熟,只是开始将特殊字符替换为空。所以所有的帮助都很棒!

1 个答案:

答案 0 :(得分:1)

您要匹配和重新排序的8位数字位于下划线之间,因此您可以执行以下操作:

$pattern = '_(\d{2})(\d{2})(\d{4})_'
'John_Doe_03062009_123456.bmp' -replace $pattern, '_${3}${2}${1}_'

模式匹配3个捕获组中下划线之间的8位数,以便您可以通过反向引用($1$2$3)重新排序捕获的子串。

有关-replace运营商的进一步帮助,请参阅here。有关正则表达式语法的进一步帮助,请参阅here。 PowerShell和普通.Net之间存在一些细微差别,例如反向引用语法(\1 vs $1),但大多数都可以直接应用。