Win11 PowerShell 中批量重命名图片文件为“固定前缀+序号”

📅 2026/7/10 2:04:52 👁️ 阅读次数 📝 编程学习
Win11 PowerShell 中批量重命名图片文件为“固定前缀+序号”

在 Windows 11 的 PowerShell 中批量重命名图片文件为“固定前缀+序号”非常简单。下面提供两种常用方法,并附详细说明。


方法一:使用Rename-Item和计数器

假设您的图片存放在D:\Pictures文件夹下,希望重命名为photo_1.jpgphoto_2.png等(前缀为photo_)。

# 进入目标文件夹cd D:\Pictures# 定义前缀和起始序号$prefix="photo_"$startNumber= 1# 获取所有图片文件(可根据扩展名筛选)$files=Get-ChildItem-File|Where-Object{$_.Extension-match"\.(jpg|jpeg|png|gif|bmp)$"}# 按名称排序(也可按 LastWriteTime 等)$files=$files|Sort-ObjectName# 遍历重命名foreach($filein$files){$newName=$prefix+$startNumber+$file.ExtensionRename-Item-Path$file.FullName-NewName$newName-WhatIf# 先预览,确认无误后去掉 -WhatIf$startNumber++}

注意

  • -WhatIf参数只显示将要执行的操作,不会真正重命名。确认无误后,请删除-WhatIf
  • 如果希望按最后修改时间排序,将Sort-Object Name改为Sort-Object LastWriteTime

方法二:一行命令(更简洁)

$i=1;Get-ChildItem*.jpg,*.png|Sort-ObjectName|%{Rename-Item$_-NewName("photo_{0}{1}"-f$i++,$_.Extension)}
  • 支持多种扩展名(在Get-ChildItem后列出)。
  • 数字自动递增,{0}是序号占位符,{1}是原扩展名。

高级功能:序号补零(如photo_001.jpg

$prefix="photo_"$i= 1Get-ChildItem-File|Where-Object{$_.Extension-match"\.(jpg|jpeg|png)$"}|Sort-ObjectName|ForEach-Object{$newName=$prefix+$i.ToString("000")+$_.Extension# 三位数字,001,002...Rename-Item$_.FullName-NewName$newName$i++}

改变"000"的位数即可控制补零长度(如"00"为两位)。


重要提示

  1. 先备份或测试:建议先用一个包含少量图片的副本文件夹测试,或使用-WhatIf参数预览结果。
  2. 避免文件名冲突:如果前缀+序号生成的名字与原文件夹中某个现有文件重名,Rename-Item会报错。脚本中可加入-ErrorAction或先检查是否存在。
  3. 执行策略:如果 PowerShell 报错“无法运行脚本”,请以管理员身份运行并输入Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

完整示例(带错误处理)

$path="D:\Pictures"$prefix="img_"$start= 1Set-Location$path$files=Get-ChildItem-File|Where-Object{$_.Extension-in".jpg",".png",".jpeg",".gif"}if($files.Count-eq0){Write-Host"未找到图片文件。"exit}$files|Sort-ObjectName|ForEach-Object-Begin{$i=$start}-Process{$newName=$prefix+$i+$_.Extensionif(Test-Path$newName){Write-Warning"文件$newName已存在,跳过$_"}else{Rename-Item-Path$_.FullName-NewName$newNameWrite-Host"已将$_重命名为$newName"$i++}}

将上述代码保存为rename.ps1,然后在 PowerShell 中运行即可。