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

PowerShell批量重命名:文件名中间插入递增序号的脚本修正方法

PowerShell批量重命名HTML文件修正方案

问题说明

现有脚本存在三个核心问题:

  • 拼接新文件名时,取完首段前缀后没有追加重复的首段前缀值,导致输出文件名缺失要求的重复前缀字段
  • 重复调用split分割文件名、硬编码拼接分割后的分段,遇到文件名中下划线数量变动时容易出现拼接错误,执行效率低
  • 默认仅处理当前目录下的html文件,未覆盖多子目录处理场景

相关文件名规则如下:

  • 原文件名示例:
8675309_FileName1_ExtraSuff1_Extrastuff2 and some more stuff_012345.html
2020202_FileName2_ExtraSuff1_Extrastuff2 and some more stuff_012345.html
  • 目标文件名规则:原首段前缀 + 下划线 + 重复首段前缀 + 下划线 + 5位补零递增序号 + 下划线 + 年份 + 下划线 + 原文件名除首段外的剩余部分 + 文件后缀
  • 目标效果示例:
8675309_8675309_00001_2022_FileName1_ExtraSuff1_Extrastuff2 and some more stuff_012345.html
2020202_2020202_00002_2022_FileName2_ExtraSuff1_Extrastuff2 and some more stuff_012345.html

修正后脚本

$i = 1
# 如需递归处理所有子目录下的html文件,在Get-ChildItem后追加 -Recurse 参数
Get-ChildItem -Filter *.html | ForEach-Object{
    # 仅做一次分割,将文件名拆为首段前缀和剩余内容两部分,避免重复分割
    $nameSegments = $_.BaseName -split '_', 2
    $firstPrefix = $nameSegments[0]
    $remainContent = $nameSegments[1]
    # 按规则拼接新文件名,如需保留原脚本中的_Performance_Eval_字段,可将下方_2022_替换为_2022_Performance_Eval_
    $newFileName = "{0}_{1}_{2}_2022_{3}{4}" -f $firstPrefix, $firstPrefix, ('{0:D5}' -f $i), $remainContent, $_.Extension
    Rename-Item -Path $_.FullName -NewName $newFileName
    $i++
}

关键修改点

  • 提前存储首段前缀变量,拼接时按规则追加一次重复前缀,补全缺失字段
  • 用-split '_',2将文件名仅拆分为2段,剩余内容直接保留原结构拼接,不需要逐段硬编码,兼容任意数量下划线的文件名
  • 减少重复split操作,提升脚本执行效率
  • 支持按需添加-Recurse参数实现多目录递归处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 18:36:25