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

PowerShell批量重命名子文件夹文件:移除(ver.X.X)标识遇问题

批量移除文件名中的(ver.X.X)部分的PowerShell脚本解决方案

你的问题出在正则表达式的写法上,原脚本里的正则没有正确匹配带空格的完整版本号括号部分,导致替换不彻底,留下了空括号。

原脚本的问题

原正则 (ver*.*)存在两个关键错误:

  • ver*是正则量词语法,意思是匹配ve加上任意数量的r(包括0个),不是你想要的匹配ver开头的内容
  • 没有转义括号(),正则里的()是分组符号,不是字面括号,导致实际只替换了部分内容,留下空括号()

正确的脚本

下面是修正后的脚本,先加-WhatIf参数预览修改效果,确认没问题后再移除该参数执行实际重命名:

Get-ChildItem -Path "c:\test" -Recurse | 
    Where-Object { $_.Name -match " \(ver\.[\d.]+\)\." } |
    Rename-Item -NewName { $_.Name -replace " \(ver\.[\d.]+\)", "" } -WhatIf

脚本说明

  1. 正则匹配规则:
    • \(ver\.[\d.]+\):匹配带前置空格的完整版本号括号部分:
      • :匹配文件名中版本号括号前的空格
      • \(和\):转义括号,因为括号在正则中是特殊字符,需要匹配字面括号时必须转义
      • ver\.:匹配ver.,其中\.转义点号(点号在正则中默认匹配任意字符)
      • [\d.]+:匹配一个或多个数字或点号,覆盖ver.2.0、ver.1.3.5等多种版本号格式
  2. 过滤逻辑:用Where-Object筛选出符合命名格式的文件,比直接用-Include更可靠(递归场景下-Include有时会因为路径规则出现遗漏)
  3. -WhatIf参数:执行时只会显示将要重命名的文件名,不会实际修改,方便你验证规则是否正确

示例效果

  • 原文件名:babebibobu (ver.2.0).xlsx
  • 重命名后:babebibobu.xlsx

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 13:05:09