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
的范围,否则该值不会增加。)
我有一些格式如下的文件
我想将 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
的范围,否则该值不会增加。)