批量重命名技巧:使用PowerShell一键整理图片文件命名规范

文章目录


场景背景

在日常工作和学习中,我们经常会遇到需要批量重命名文件的情况。最近我在整理一套图片素材时遇到了这样一个需求:将名为 CDZCQ_500×263_0001.jpgCDZCQ_500×263_0002.png 等格式的文件,统一重命名为 CDZCQ_1.jpgCDZCQ_2.png 这样的简洁格式。

这种命名模式常见于:

  • 从设计软件导出的序列帧图片
  • 相机连拍生成的序列文件
  • 网络爬虫下载的批量图片
  • 视频剪辑导出的帧序列

问题分析

原始文件名模式:CDZCQ_500×263_0001

  • CDZCQ:文件前缀标识
  • 500×263:图片尺寸信息(需要移除)
  • 0001:序列号(需要去除前导零)

目标文件名模式:CDZCQ_1

  • 保留核心前缀
  • 移除冗余的尺寸信息
  • 简化序列号格式

解决方案

方案一:完整的PowerShell脚本

powershell 复制代码
# 批量重命名图片文件脚本
# 将 CDZCQ_500×263_0001 格式重命名为 CDZCQ_1 格式

# 设置要处理的文件夹路径
$folderPath = "C:\Your\Folder\Path"  # 请修改为你的实际文件夹路径

# 进入目标文件夹
Set-Location $folderPath

# 获取所有符合条件的文件
$files = Get-ChildItem -File | Where-Object { $_.Name -match "^CDZCQ_500×263_\d+" }

Write-Host "找到 $($files.Count) 个需要重命名的文件" -ForegroundColor Green

# 遍历并重命名文件
foreach ($file in $files) {
    # 使用正则表达式提取数字部分
    if ($file.Name -match "CDZCQ_500×263_(\d+)") {
        $number = $matches[1]
        
        # 去除前导零,比如 0001 变成 1
        $cleanNumber = [int]$number
        
        # 构建新文件名(保持原扩展名)
        $newName = "CDZCQ_$cleanNumber" + $file.Extension
        
        # 重命名文件
        try {
            Rename-Item -Path $file.FullName -NewName $newName
            Write-Host "重命名成功: $($file.Name) -> $newName" -ForegroundColor Yellow
        }
        catch {
            Write-Host "重命名失败: $($file.Name)" -ForegroundColor Red
            Write-Host "错误信息: $($_.Exception.Message)" -ForegroundColor Red
        }
    }
}

Write-Host "重命名完成!" -ForegroundColor Green

方案二:简洁的单行命令

对于熟悉PowerShell的用户,可以使用这个紧凑版本:

powershell 复制代码
Get-ChildItem "CDZCQ_500×263_*" | ForEach-Object { $newName = "CDZCQ_$([int]($_.BaseName -replace '.*_'))$($_.Extension)"; Rename-Item $_.Name $newName }

技术解析

核心代码逻辑

  1. 文件筛选

    powershell 复制代码
    $files = Get-ChildItem -File | Where-Object { $_.Name -match "^CDZCQ_500×263_\d+" }

    使用正则表达式匹配目标文件模式

  2. 数字提取与处理

    powershell 复制代码
    if ($file.Name -match "CDZCQ_500×263_(\d+)") {
        $number = $matches[1]
        $cleanNumber = [int]$number  # 自动去除前导零
    }
  3. 安全重命名

    powershell 复制代码
    try {
        Rename-Item -Path $file.FullName -NewName $newName
    }
    catch {
        # 异常处理
    }

正则表达式详解

  • ^CDZCQ_500×263_:匹配以"CDZCQ_500×263_"开头的字符串
  • (\d+):匹配一个或多个数字,并捕获为分组
  • $matches[1]:获取第一个捕获组的内容(即数字部分)

安全操作指南

预览模式(推荐先使用)

在执行实际重命名前,建议先运行预览版本确认效果:

powershell 复制代码
# 预览模式 - 只显示将要重命名的文件,不实际执行
$folderPath = "C:\Your\Folder\Path"
Set-Location $folderPath

$files = Get-ChildItem -File | Where-Object { $_.Name -match "^CDZCQ_500×263_\d+" }

Write-Host "预览模式 - 将要重命名的文件:" -ForegroundColor Cyan

foreach ($file in $files) {
    if ($file.Name -match "CDZCQ_500×263_(\d+)") {
        $number = $matches[1]
        $cleanNumber = [int]$number
        $newName = "CDZCQ_$cleanNumber" + $file.Extension
        
        Write-Host "$($file.Name) -> $newName" -ForegroundColor White
    }
}

Write-Host "`n以上是预览,要实际执行重命名请使用完整脚本。" -ForegroundColor Yellow

操作步骤

  1. 备份原始文件:在执行任何批量操作前,建议先复制一份原始文件
  2. 修改路径 :将脚本中的 $folderPath 变量改为你的实际文件夹路径
  3. 测试运行:先使用预览模式确认重命名效果
  4. 正式执行:确认无误后运行完整脚本

扩展应用

这个脚本可以轻松适配其他命名模式。比如:

适配不同前缀

powershell 复制代码
# 对于 "IMG_1920x1080_001.jpg" → "IMG_1.jpg"
if ($file.Name -match "^IMG_\d+x\d+_(\d+)") {
    $newName = "IMG_$([int]$matches[1])" + $file.Extension
}

保留更多信息

powershell 复制代码
# 如果想保留尺寸信息:CDZCQ_500×263_1.jpg
if ($file.Name -match "^CDZCQ_(\d+x\d+)_(\d+)") {
    $size = $matches[1]
    $number = [int]$matches[2]
    $newName = "CDZCQ_${size}_$number" + $file.Extension
}

经验总结

  1. 正则表达式是关键:掌握基本的正则表达式能极大提高文件处理效率
  2. 先预览后执行:批量操作前务必先确认效果,避免不可逆的修改
  3. 错误处理很重要:添加异常处理确保脚本的健壮性
  4. 灵活适配需求:理解脚本原理后可以轻松修改以适应不同场景

适用场景

这个技巧适用于:

  • 🖼️ 图片素材整理
  • 📹 视频帧序列处理
  • 📄 文档批量重命名
  • 🎨 设计资源管理
  • 🔧 项目文件整理

您好,我是肥晨。

欢迎关注我获取前端学习资源,日常分享技术变革,生存法则;行业内幕,洞察先机。

相关推荐
java_logo2 小时前
Apache Doris Docker 部署指南:实时分析数据库实战
数据库·docker·apache·doris·apache doris·轩辕镜像·docker部署doris
爱写代码的森8 小时前
鸿蒙三方库 | harmony-utils之ImageUtil图片保存到本地详解
服务器·华为·harmonyos·鸿蒙·huawei
广州灵眸科技有限公司9 小时前
xfce桌面触摸校准:基于灵眸科技EASY-EAl-Orin-Nano
数据库·windows·科技
憧憬成为web高手12 小时前
皮卡丘靶场速通--sql 2
数据库·sql·mybatis
HLC++12 小时前
Linux的进程间通信
android·linux·服务器
段一凡-华北理工大学12 小时前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
白露与泡影13 小时前
Arthas 实战指南:从方法耗时定位到 JVM 变量热修改
服务器·jvm·c#
oradh14 小时前
Oracle XTTS实现跨版本迁移和升级(Oracle 11g单库升级至19C RAC集群)
数据库·oracle·11g升级19c·xtts跨版本迁移和升级
神奇霸王龙14 小时前
Claude Code屠榜:MiMo与Grok紧追Codex
服务器·网络·人工智能·gpt·ai·ai编程
Web极客码14 小时前
WordPress SEO优化:提升网站排名的13个关键步骤
服务器·seo·wordpress