PowerShell批量重命名照片:同日期文件添加递增序号方法
解决同日期照片重命名冲突并添加递增序号的方法
可以通过按文件的最后修改日期分组,再给每组内的文件添加递增序号来解决这个问题,具体PowerShell命令如下:
Get-ChildItem -File | Group-Object -Property { $_.LastWriteTime.ToString("yyyyMMdd") } | ForEach-Object { $count = 1 $_.Group | ForEach-Object { $newName = if ($_.Group.Count -eq 1) { "New name_$($_.LastWriteTime.ToString('yyyyMMdd'))$($_.Extension)" } else { "New name_$($_.LastWriteTime.ToString('yyyyMMdd'))($count)$($_.Extension)" } $_ | Rename-Item -NewName $newName -Force $count++ } }
命令说明:
Get-ChildItem -File:仅获取当前目录下的文件(排除文件夹)Group-Object -Property { $_.LastWriteTime.ToString("yyyyMMdd") }:将文件按最后修改日期的yyyyMMdd格式分组,同日期文件会被归为一组- 遍历每个分组:
- 初始化计数器
$count = 1 - 对分组内的每个文件:
- 若分组仅含一个文件,直接使用「New name_日期+扩展名」命名
- 若分组有多个文件,在日期后添加递增序号(如
(1)、(2)) - 执行重命名,
-Force参数确保处理可能存在的重名冲突 - 计数器自增
- 初始化计数器
注意事项:
- 如果照片的拍摄日期与
LastWriteTime不符(比如跨设备拷贝后修改时间变更),可替换为$_.CreationTime;若要读取照片EXIF拍摄日期,需借助第三方工具(如ExifTool),PowerShell原生命令仅支持文件属性日期 - 执行重命名前,可先移除
Rename-Item相关代码,仅输出$newName预览命名结果,确认无误后再执行重命名
内容的提问来源于stack exchange,提问作者Riley W
相关产品推荐
相关产品推荐

