Powershell通过按升序替换n个字符来重命名文件名

Powershell rename filename by replacing n characters in ascending order

我有一些格式如下的文件

我想将 60- 之后的 3 个字符按升序替换。 我使用以下代码删除了前 28 个字符

获取子项 * |重命名项目-newname{string.substring(28)}

然后使用以下重命名

$i = 1

dir | ForEach-Object {$_ | Rename-Item -NewName ('00092-100221-XX-A-233-60-{0:D3} {1}{2}' -f $i++, $.BaseName, $.Extension)}

但是我最终丢失了原始文件顺序。有没有一种方法可以通过保持原始文件的顺序重命名这些文件,而且可能更省时?

您可以一步完成所有操作,从而保留原始文件顺序:

$script:i = 1
Get-ChildItem | Rename-Item -NewName {
    '00092-100221-XX-A-233-60-{0:D3}{1}' -f $script:i++, $_.Name.SubString(28)
}

(请注意,我明确指定了$i的范围,否则该值不会增加。)