You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell中给照片/视频文件名前置拍摄日期时间?

PowerShell 实现照片视频按拍摄日期重命名

可以通过 PowerShell 结合 exiftool 实现需求,以下是具体方案:

前置要求

  1. 下载并安装 ExifTool(一款常用的多媒体元数据处理工具,解压后将 exiftool.exe 所在路径添加到系统环境变量 PATH 中即可)
  2. 确保 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):未找到有效拍摄日期"
    }
}

脚本说明

  1. Live Photo 处理:自动识别 MOV 对应的 JPEG/JPG 文件,同步使用照片的拍摄日期
  2. 日期提取逻辑:
    • 照片(JPG/JPEG/HEIC/PNG)优先读取 DateTimeOriginal(EXIF 拍摄日期)
    • 视频(MOV/MP4)读取 CreateDate(内容创建日期)
  3. 安全机制:检查新文件名是否存在,避免覆盖已有文件;默认启用 -WhatIf 参数预览操作,无实际修改
  4. 跳过无日期文件:未检测到有效日期的文件保持原文件名不变

内容的提问来源于stack exchange,提问作者PatS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 10:06:03