如何按修改日期重命名文件并添加增量编号避免重复冲突?
按文件修改日期重命名并添加增量编号避免重复
你当前的代码会在多个文件修改日期和扩展名完全相同时触发重名错误,要解决这个问题,可以先按「修改日期字符串+扩展名」分组,再给每组内的文件添加增量编号:
Get-ChildItem | Group-Object -Property { $_.LastWriteTime.ToString("yyyyMMdd HH.mm.ss") + $_.Extension } | ForEach-Object { $counter = 0 $_.Group | ForEach-Object { $datePrefix = $_.LastWriteTime.ToString("yyyyMMdd HH.mm.ss") $ext = $_.Extension $newName = if ($counter -eq 0) { "$datePrefix$ext" } else { "$datePrefix ($counter)$ext" } $_ | Rename-Item -NewName $newName -WhatIf $counter++ } }
代码说明:
Group-Object把修改日期和扩展名完全一致的文件归为一组,避免跨组编号混乱- 每组内用
$counter记录序号,第一个文件直接用日期命名,后续文件添加(1)、(2)这样的后缀 -WhatIf参数用于预览重命名结果,确认无误后可以删除该参数执行实际重命名
示例效果:
| 原文件名 | 修改日期 | 新文件名 |
|---|---|---|
| Photo1 | 20230825 23.00.53 | 20230825 23.00.53 |
| Photo2 | 20230825 23.00.53 | 20230825 23.00.53 (1) |
| Photo3 | 20230826 02.04.10 | 20230826 02.04.10 |
| Photo4 | 20230828 18.02.20 | 20230828 18.02.20 |
| Photo5 | 20230828 18.02.20 | 20230828 18.02.20 (1) |
| Photo6 | 20230828 18.02.20 | 20230828 18.02.20 (2) |
内容的提问来源于stack exchange,提问作者Andrea Brama
相关产品推荐
相关产品推荐

