如何在 Windows 上从文件名中提取日期

如何在 Windows 上从文件名中提取日期

我需要手动格式化一些文件的日期值。

我刚刚从一个应用程序中提取了 6000 张照片/视频,它们都按照这种结构命名,每张照片都有不同的日期和时间:2016-12-09_10.13.39.JPG

尽管如此,文件显示错误创建日期修改日期值,显示今天的日期而不是创建和修改的日期。

我想知道是否有办法将文件的名称提取为 Windows 日期格式 [澳大利亚],如下所示:12/09/2016 1:39 PM,然后将值格式化为创建日期和修改日期字段?

答案1

您可以使用以下 PowerShell 脚本

$culture = [cultureinfo]::GetCultureInfo('en-AU')
foreach ($f in ls *.jpg) {
    $d = [datetime]::ParseExact($f.BaseName, "yyyy-MM-dd_HH.mm.ss", $culture)
    $f.CreationTime = $d
    $f.LastWriteTime = $d
}

它将循环遍历当前文件夹中的所有文件,解析文件名中的日期,然后将创建和修改时间设置为该时间。在这种情况下实际上是不必要的,您可以将的$culture最后一个参数更改为[datetime]::ParseExact$null

如果您也想对子文件夹中的所有文件执行此操作,则将foreach标题更改为ls -R *.jpg

相关内容