ファイル名に連続したプレフィックスを追加しても問題ありません。以下は、問題のトップディレクトリでうまく機能します。
$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}
これら 2 つのスニペットの最初のスニペットを取得して、すべてのサブディレクトリ内のすべてのファイルを検索し、先頭に連番を付けて名前を変更する方法について、いくつかのガイダンスを得たいと思っています。