如何通过PowerShell批量重命名文件,在首个空格前补加缺失逗号
批量补全PDF文件名姓氏后逗号的PowerShell实现
问题说明
目标文件命名规范为:
Lastname, Firstname - 1010 ddmmyy.pdf
现有半数以上PDF缺失姓氏后的逗号,此前使用的替换命令会将文件名中所有空格替换为逗号,不符合需求,需要实现仅在第一个空格前插入逗号的批量重命名,且不改动已经符合规范的文件。
可直接使用的命令
先执行预演命令查看重命名效果,不会实际修改文件:
Get-ChildItem -File *.pdf | Rename-Item -NewName { $_.Name -replace '^([^,\s]+)(\s)', '$1,$2' } -WhatIf
确认输出的重命名结果符合预期后,删掉-WhatIf参数执行实际重命名即可:
Get-ChildItem -File *.pdf | Rename-Item -NewName { $_.Name -replace '^([^,\s]+)(\s)', '$1,$2' }
逻辑说明
- 正则
^([^,\s]+)(\s)仅匹配文件名开头、第一个空格前不含逗号的字符段(即缺失逗号的姓氏部分),以及紧跟其后的第一个空格:- 已经符合规范的文件名,姓氏后自带逗号,不会命中该匹配规则,不会被重复修改
- 命中规则的文件名,替换逻辑为保留原姓氏、原第一个空格,在两者中间插入逗号,不会改动文件名后续的空格和内容
- 效果示例:
- 原文件名
Zhang San - 1010 051124.pdf会被重命名为Zhang, San - 1010 051124.pdf - 原文件名
Zhang, San - 1010 051124.pdf不会发生任何改动
- 原文件名
内容的提问来源于stack exchange,提问作者NotVeryGoodAtThis
相关产品推荐
相关产品推荐

