在 powershell windows 10 中按“拍摄日期”属性重命名 .jpg 文件

在 powershell windows 10 中按“拍摄日期”属性重命名 .jpg 文件

在 Windows 10 上,我使用 PowerShell 将几个 .jpg 文件批量重命名为 yyyyMMdd+_ 格式(4位数字)+.jpg

我能够使用上次写入时间属性重命名其中许多文件夹,但对于特定文件夹,我需要使用“拍摄日期”属性。到目前为止,我的代码如下所示:

$number = 0001
gci *.jpg -Recurse | 
%{rename-item $_ -newname ($_.LastWriteTime.toString("yyyyMMdd")+'_{0:0000}.jpg' -f $number++)}

我找不到使用“拍摄日期”属性的方法

谢谢

答案1

检索元数据,例如拍摄日期,您必须使用 COM 对象:

$FOlder = 'c:\pictures\folder'
$CharWhiteList = '[^: \w\/]'
$Shell = New-Object -ComObject shell.application
$i = 1
gci $FOlder *.jpg -Recurse  | ForEach{
    $dir = $Shell.Namespace($_.DirectoryName)
    $DateTaken = [DateTime]($dir.GetDetailsOf($dir.ParseName($_.Name),12) -replace $CharWhiteList)
    Rename-Item $_.FullName ('{0:yyyyMMdd}_{1:0000}.jpg' -f $DateTaken, $i++) -WhatIf
}

Shell.命名空间

文件夹.获取详细信息

文件夹.解析名称

相关内容