在 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
}