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

PowerShell实现带全局计数器与目录内序号的照片批量重命名

PowerShell批量照片重命名代码修正

需求明确:要把照片批量重命名成PHOTO1000_NAMEA_1.jpg、PHOTO1001_NAMEA_2.jpg这类格式,满足两个要求:

  • 全局计数器从1000开始递增,紧跟在PHOTO后面
  • 文件名末尾要加上当前目录内的照片序号

原代码的问题很明显:

  1. 全局计数器只设了初始值1000,但每次处理文件后没递增,导致所有文件都会用同一个序号
  2. 完全没处理目录内的本地序号逻辑

修正后的代码如下:

# 初始化全局计数器,从1000起步
$globalCount = 1000

# 先按目录分组,再逐个目录处理生成本地序号
Get-ChildItem -Recurse -Include *.jpg | 
    Group-Object -Property Directory | 
    ForEach-Object {
        # 按文件创建时间排序,保证目录内序号顺序合理(也可以换成LastWriteTime)
        $localFiles = $_.Group | Sort-Object -Property CreationTime
        $localCount = 1
        foreach ($file in $localFiles) {
            # 拼接符合要求的新文件名
            $newName = "PHOTO{0}_{1}_{2}{3}" -f $globalCount, $file.Directory.Name, $localCount, $file.Extension
            # -WhatIf用于预览重命名结果,确认没问题后删掉这个参数再执行
            Rename-Item -LiteralPath $file.FullName -NewName $newName -WhatIf
            # 处理完一个文件,两个计数器都加1
            $globalCount++
            $localCount++
        }
    }

几个关键改动说明:

  • 用Group-Object按目录分组,这样能给每个目录里的文件单独编本地序号
  • 给目录内的文件加了排序逻辑,避免序号乱序
  • 每次处理文件后同时递增全局和本地计数器,保证两个序号都正常增长
  • 调整了文件名格式,去掉了原代码里PHOTO后面的下划线,完全匹配需求里的命名样式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 05:37:20