PowerShell批量重命名:给姓氏与名字间添加逗号
批量重命名文件解决方案
你的问题出在之前的脚本都是硬编码了具体姓名(SMITH John),只能修改单个特定文件名,无法批量处理;第三个脚本缺少文件输入源,导致报错。以下是通用的批量处理方案:
基础版脚本(适用于单词姓氏,如SMITH John)
# 先预览重命名效果,不会实际修改文件 Get-ChildItem -Path "C:\Users\powershelltest\*.pdf" | Rename-Item -NewName { $_.Name -replace '^([A-Z]+) ([A-Z][a-z]+)(.*)$', '$1, $2$3' } -WhatIf # 确认预览结果正确后,去掉-WhatIf执行实际重命名 Get-ChildItem -Path "C:\Users\powershelltest\*.pdf" | Rename-Item -NewName { $_.Name -replace '^([A-Z]+) ([A-Z][a-z]+)(.*)$', '$1, $2$3' }
进阶版脚本(适用于带空格的姓氏,如DE LA CRUZ Maria)
如果你的姓氏包含空格,可调整正则表达式匹配多词姓氏:
Get-ChildItem -Path "C:\Users\powershelltest\*.pdf" | Rename-Item -NewName { $_.Name -replace '^([A-Z\s]+) ([A-Z][a-z]+)(.*)$', '$1, $2$3' } -WhatIf
正则逻辑说明
^([A-Z]+):捕获文件名开头的全大写单词姓氏([A-Z\s]+):捕获带空格的全大写多词姓氏([A-Z][a-z]+):捕获首字母大写的名字部分(.*)$:捕获文件名剩余的所有内容(包括后缀)$1, $2$3:将捕获的姓氏后添加逗号+空格,再拼接名字和剩余内容
内容的提问来源于stack exchange,提问作者Erin Poworski




