向文件名添加顺序前缀没有问题。以下在有问题的顶级目录上效果很好。
$path="E:\path\newtest1"
$count=4000
Get-ChildItem $path -recurse | Where-Object {!$_.PSIsContainer -and $_.Name -NotMatch '^\d{4}\s+'} | ForEach -Process {Rename-Item $_ -NewName ("$count " + $_.name -f $count++) -whatif}
但是如果顶层目录中的子文件夹中有文件,这些都完全丢失了。Whatif 报告说,对于任何更深的文件,它“不存在”。
基于查看其他递归问题的一些页面,我尝试了以下操作,但您可能会猜到我不知道它在做什么。Whatif 表明它至少会拾取和重命名所有文件。但是以下内容做得太多,并使用每个数字制作每个文件的多个副本:
$path="E:\path\newtest1"
$count=4000
Get-ChildItem -recurse | ForEach-Object { Get-ChildItem $path | Rename-item -NewName ("$count " + $_.Basename -f $count++) -whatif}
真的很想获得一些关于如何让这两个片段中的第一个片段工作以查找所有子目录中的所有文件并在前面加上序号的方式重命名它们的指导。