如何在PowerShell中给照片/视频文件名前置拍摄日期时间?
PowerShell 实现照片视频按拍摄日期重命名
可以通过 PowerShell 结合 exiftool 实现需求,以下是具体方案:
前置要求
- 下载并安装 ExifTool(一款常用的多媒体元数据处理工具,解压后将
exiftool.exe所在路径添加到系统环境变量PATH中即可) - 确保 PowerShell 能调用
exiftool(在控制台输入exiftool -ver验证)
重命名脚本
# 目标文件夹路径,可根据实际修改 $targetDir = "C:\你的照片视频文件夹路径" # 支持处理的文件扩展名 $supportedExts = @(".png", ".jpeg", ".jpg", ".heic", ".mov", ".mp4") # 获取目标文件夹内所有支持的文件 $files = Get-ChildItem -Path $targetDir -File | Where-Object { $supportedExts -contains $_.Extension.ToLower() } foreach ($file in $files) { $dateTaken = $null $baseName = $file.BaseName # 处理 Live Photo 的 MOV 文件:优先使用对应 JPEG/JPG 的拍摄日期 if ($file.Extension.ToLower() -eq ".mov") { $matchingPhoto = Get-ChildItem -Path $targetDir -File | Where-Object { $_.BaseName -eq $baseName -and ($_.Extension.ToLower() -in ".jpeg", ".jpg") } if ($matchingPhoto) { $dateOutput = & exiftool -DateTimeOriginal -d "%Y-%m-%d %H%M%S" -S -s $matchingPhoto.FullName if ($dateOutput) { $dateTaken = $dateOutput.Split(": ")[1] } } } # 若未获取到日期,尝试从当前文件提取 if (-not $dateTaken) { # 根据文件类型选择对应的日期标签 $dateTag = switch ($file.Extension.ToLower()) { { $_ -in ".jpg", ".jpeg", ".heic", ".png" } { "DateTimeOriginal" } { $_ -in ".mov", ".mp4" } { "CreateDate" } } $dateOutput = & exiftool -$dateTag -d "%Y-%m-%d %H%M%S" -S -s $file.FullName if ($dateOutput) { $dateTaken = $dateOutput.Split(": ")[1] } } # 若成功获取日期,执行重命名 if ($dateTaken) { $newFileName = "$dateTaken $($file.Name)" $newFilePath = Join-Path -Path $targetDir -ChildPath $newFileName # 检查新文件名是否已存在,避免覆盖 if (-not (Test-Path -Path $newFilePath)) { # 保留 -WhatIf 参数可预览重命名操作,确认无误后删除该参数执行实际重命名 Rename-Item -Path $file.FullName -Destination $newFilePath -WhatIf } else { Write-Host "跳过 $($file.Name):新文件名 $newFileName 已存在" } } else { Write-Host "跳过 $($file.Name):未找到有效拍摄日期" } }
脚本说明
- Live Photo 处理:自动识别 MOV 对应的 JPEG/JPG 文件,同步使用照片的拍摄日期
- 日期提取逻辑:
- 照片(JPG/JPEG/HEIC/PNG)优先读取
DateTimeOriginal(EXIF 拍摄日期) - 视频(MOV/MP4)读取
CreateDate(内容创建日期)
- 照片(JPG/JPEG/HEIC/PNG)优先读取
- 安全机制:检查新文件名是否存在,避免覆盖已有文件;默认启用
-WhatIf参数预览操作,无实际修改 - 跳过无日期文件:未检测到有效日期的文件保持原文件名不变
内容的提问来源于stack exchange,提问作者PatS
相关产品推荐
相关产品推荐

