PowerShell批量重命名文件:按Lxx循环命名需求求助
PowerShell批量重命名文件(1-12循环后缀)
一、直接修改脚本实现循环后缀
无需拆分文件夹,通过计数器循环逻辑即可实现1-12的后缀序列,同时保证后缀为两位数格式(如L01而非L1):
Get-ChildItem -Path "C:\Users\Admin\Desktop\TEST" -Recurse -Include "*.txt" | ForEach-Object -Begin { $Counter = 1 } -Process { # 生成格式化的两位数后缀 $suffix = "L{0:D2}" -f $Counter # 拼接新文件名:原基础名 + _ + 后缀 + 原扩展名 $newName = "{0}_{1}{2}" -f $_.BaseName, $suffix, $_.Extension Rename-Item $_ -NewName $newName # 计数器循环:达到12后重置为1 $Counter = $Counter % 12 + 1 }
逻辑说明
{0:D2}将数字格式化为两位数,确保后缀序列是L01到L12,符合规范要求$Counter % 12 + 1实现循环:当计数器为12时,12%12=0,加1后回到1,完成1-12的循环逻辑
二、按12个一组拆分到文件夹后重命名
如果需要先分组再处理,可分两步执行:
1. 将文件按12个一组拆分到对应文件夹
$files = Get-ChildItem -Path "C:\Users\Admin\Desktop\TEST" -Recurse -Include "*.txt" $groupSize = 12 $totalGroups = [math]::Ceiling($files.Count / $groupSize) for ($i = 0; $i -lt $totalGroups; $i++) { # 创建分组文件夹 $groupFolder = Join-Path "C:\Users\Admin\Desktop\TEST" "Group_$($i+1)" if (-not (Test-Path $groupFolder)) { New-Item -ItemType Directory -Path $groupFolder | Out-Null } # 移动对应组的文件到文件夹 $startIdx = $i * $groupSize $endIdx = [math]::Min(($i+1)*$groupSize - 1, $files.Count - 1) $files[$startIdx..$endIdx] | Move-Item -Destination $groupFolder }
2. 遍历每个分组文件夹完成重命名
Get-ChildItem -Path "C:\Users\Admin\Desktop\TEST\Group_*" -Directory | ForEach-Object { $currentFolder = $_ Get-ChildItem -Path $currentFolder.FullName -Include "*.txt" | ForEach-Object -Begin { $Counter = 1 } -Process { $suffix = "L{0:D2}" -f $Counter $newName = "{0}_{1}{2}" -f $_.BaseName, $suffix, $_.Extension Rename-Item $_ -NewName $newName $Counter++ } }
逻辑说明
- 第一步先计算总分组数,创建对应文件夹并按12个一组移动文件
- 第二步遍历每个分组文件夹,在内部按1-12递增重命名,每组最多12个文件,无需循环计数器
内容的提问来源于stack exchange,提问作者w j
相关产品推荐
相关产品推荐

