.\exiftool.exe '-FileCreateDate<filename' *.jpg //将文件名中的时间设置为文件创建时间
.\exiftool.exe '-FileModifyDate<filename' *.jpg //将文件名中的时间设置为文件修改时间
.\exiftool '-DateTimeOriginal<FileModifyDate' *.jpg //将修改时间设置为文件拍摄时间
.\exiftool '-DateTimeOriginal<filename' *.jpg //将文件名设置为文件拍摄时间
//将文件名设置为文件拍摄时间
$Out**ncoding = [System.Text.Encoding]::UTF8
$dateGroups = @{}
Get-ChildItem -Filter .jpg | ForEach-Object {
filename = .Name
if (filename -match "_([0-9]{4}-[0-9]{2}-[0-9]{2})_" -or filename -match "^[^]([0-9]{4}-[0-9]{2}-[0-9]{2})") {
date = matches[1] -replace '-', ':' # 替换 - 为 :
dateTime = "date 00:00:00" # 补全时间部分
if (-not dateGroups.ContainsKey(dateTime)) {
dateGroups[dateTime] = @()
}
dateGroups[dateTime] += $_.FullName
}
}
foreach (dateTime in dateGroups.Keys) {
files = dateGroups[$dateTime]
$tempFile = [System.IO.Path]::GetTempFileName() + ".txt"
files | Out-File -FilePath tempFile -Encoding utf8
& .\exiftool "-DateTimeOriginal=$dateTime" "-overwrite_original" -@ $tempFile
if ($LASTEXITCODE -eq 0) {
Write-Host "Success: $dateTime ($($files.Count) files)"
} else {
Write-Host "Failed: $dateTime"
}
Remove-Item $tempFile
}