Powershell重命名日期时间格式的文件

Loo*_*oom 1 powershell datetime rename-item-cmdlet

我有一个文件夹,其中包含按时间戳命名的媒体文件,如下所示yyyyMMdd_HHmmss_*.*。我需要将它们重命名为yyyy-MM-dd HH-mm-ss *.*

例如,我需要将文件重命名20181019_210353_BURST2.jpg2018-10-19 21-03-53 BURST2.jpg 有一个我的丑陋方法

PS E:> gci | Rename-Item -NewName { $_.Name.Substring(0,4) + '-' + $_.Name.Substring(4,2) + '-' + $_.Name.Substring(6,2) + ' ' + $_.Name.Substring(9,2) + '-' + $_.Name.Substring(11,2) + '-' + $_.Name.Substring(13,2) + $_.Name.Substring(15) }
Run Code Online (Sandbox Code Playgroud)

实现我的目的的正确命令是什么?

mkl*_*nt0 6

如果您需要简洁,可以将-replace运算符与以下正则表达式一起使用:

Get-ChildItem -File -Filter *.jpg | Rename-Item -NewName { 
  $_.Name -replace '(^\d{2})?(\d{2})(\d{2})(\d{2})_', '$1$2-$3-$4 '
} -WhatIf
Run Code Online (Sandbox Code Playgroud)

注意:上面命令中的-WhatIf公共参数预览操作。-WhatIf 一旦您确定该操作将按照您的要求进行,请将其删除。

可以在此 regex101.com 页面上找到该正则表达式的说明以及对其进行实验和替换表达式的能力。