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

如何用PowerShell按日期排序并给不同扩展名文件批量重命名加序号

iPhone照片/视频按日期排序并添加递增序号的实现方案

需求

将两部iPhone导出的照片、视频按日期排序,给每个文件名加上四位递增序号,格式示例:0001 - 原文件名。

已尝试的代码(未达预期)

参考案例拼凑的代码,运行后未实现目标:

$count = 1
Get-ChildItem -Path 'C:\Users\miste\OneDrive\Desktop\Finalized Seattle Pictures' -File |
Sort-Object CreationTime |
Rename-Item -NewName {'{0:D4} - {1}' -f $script:count++, $_ } -WhatIf

用于验证排序的测试代码

他人提供的测试代码,可查看前5个文件的排序结果:

Get-ChildItem -Path 'C:\Users\miste\OneDrive\Desktop\Finalized Seattle Pictures' -File | Sort-Object CreationTime | Select-Object Name, CreationTime -First 5

正确实现代码

基础修正版(按系统创建时间排序)

修复原代码未明确指定文件名的问题,确保序号正确递增:

$count = 1
Get-ChildItem -Path 'C:\Users\miste\OneDrive\Desktop\Finalized Seattle Pictures' -File |
Sort-Object CreationTime |
Rename-Item -NewName { '{0:D4} - {1}' -f $script:count++, $_.Name } -WhatIf

优化版(按实际拍摄日期排序)

iPhone导出的媒体文件,系统CreationTime可能不是实际拍摄时间,优先用照片的拍摄日期属性排序:

$count = 1
Get-ChildItem -Path 'C:\Users\miste\OneDrive\Desktop\Finalized Seattle Pictures' -File |
# 针对照片视频优先用拍摄日期,其他文件 fallback 到创建时间
Sort-Object {
    if ($_.Extension -in '.jpg', '.jpeg', '.png', '.mov', '.mp4') {
        $_.DateTaken ?? $_.CreationTime
    } else {
        $_.CreationTime
    }
} |
Rename-Item -NewName { '{0:D4} - {1}' -f $script:count++, $_.Name } -WhatIf

注意事项

  1. 代码中的-WhatIf参数用于预览重命名结果,确认输出符合预期后,删除该参数即可执行实际重命名操作。
  2. 若DateTaken属性无法识别,需确保PowerShell版本为5.1及以上(Windows系统默认对常见媒体格式支持该属性)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 13:25:10