PowerShell脚本需求:将数字前缀文件名调整为数字后缀格式
解决PowerShell批量重命名文件的问题
嘿,刚接触PowerShell完全不用慌,这个重命名需求很好实现,我给你准备了一个简单易懂的脚本,还会一步步拆解细节,保证你能搞明白~
完整测试脚本(先模拟操作,安全不翻车)
# 获取当前目录下所有带"Customer.txt"的文件,再精准筛选开头是数字的目标文件 Get-ChildItem -Filter "*Customer.txt" | Where-Object { $_.Name -match '^(\d+)Customer\.txt$' } | ForEach-Object { # 从正则匹配结果里提取开头的数字部分 $number = $matches[1] # 构造新文件名:Customer+数字+原扩展名 $newName = "Customer$number$($_.Extension)" # -WhatIf参数会先模拟操作,不真改文件名,方便你确认效果 Rename-Item -Path $_.FullName -NewName $newName -WhatIf }
脚本细节拆解
Get-ChildItem -Filter "*Customer.txt":先把当前目录里所有带Customer.txt的文件列出来,缩小处理范围,避免误碰其他无关文件。Where-Object { $_.Name -match '^(\d+)Customer\.txt$' }:用正则表达式精准锁定目标文件:^(\d+):捕获文件名开头的1到N位数字(不管是1位、2位还是3位都能匹配)Customer\.txt$:匹配后面固定的Customer.txt部分,\.是转义点号(因为正则里点号是特殊字符,必须转义才能匹配真实的点)
$matches[1]:正则里用括号()捕获的内容会存在$matches变量里,这里取第一个捕获组就是我们需要的数字。$newName = "Customer$number$($_.Extension)":构造新文件名,用$($_.Extension)保留原文件的扩展名,这样就算你的文件不是.txt也能适配。-WhatIf参数:加上这个参数后,脚本只会输出要执行的重命名操作,不会真的修改文件名。等你确认输出的新文件名都符合预期后,删掉这个参数就能真正执行重命名了。
额外小提示
- 如果目录里已经存在
Customer1.txt这类目标文件,重命名时会报错,执行前可以先检查一下有没有重名文件。 - 要是想同时处理子目录里的文件,给
Get-ChildItem加上-Recurse参数就行。
内容的提问来源于stack exchange,提问作者Bandito
相关产品推荐
相关产品推荐

