(ここではすべてのパスを投稿します。気まずいほど親密な感じがしますが、何の害もありませんよね?)
これが私の PowerShell コマンド プロンプトです:
PS D:\Local generations\Tlungvel> ls | Rename-Item -NewName {"TlungvelSolar " + $_.Name}
Rename-Item : Could not find a part of the path.
At line:1 char:6
+ ls | Rename-Item -NewName {"TlungvelSolar " + $_.Name}
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : WriteError: (D:\Local genera..._02.07.2021.xls:String) [Rename-Item], DirectoryNotFoundException
+ FullyQualifiedErrorId : RenameItemIOError,Microsoft.PowerShell.Commands.RenameItemCommand
Rename-Item : Could not find a part of the path.
At line:1 char:6
+ ls | Rename-Item -NewName {"TlungvelSolar " + $_.Name}
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : WriteError: (D:\Local genera..._23.07.2021.xls:String) [Rename-Item], DirectoryNotFoundException
+ FullyQualifiedErrorId : RenameItemIOError,Microsoft.PowerShell.Commands.RenameItemCommand
...ディレクトリ内のすべてのファイルに対して同様に行われます。
このコマンドは、私のような初心者のパワーユーザーにとっても十分にシンプルに思えます ("ls | Rename-Item -NewName {"TlungvelSolar " + $_.Name}")。ディレクトリ内のファイル数が少ない場合は正常に動作します。ただし、ファイル数が特定のしきい値に達すると、プロセスが無期限に繰り返され、ファイルごとに上記のエラーが発生します。
たとえば、ファイル名の 1 つは「Power_Drawal_from_23.07.2021___24.07.2021」です。
ファイル数が 22 を超えると (このファイル名の場合)、名前が「TlungvelSolar TlungvelSolar TlungvelSolar TlungvelSolar TlungvelSolar TlungvelSolar TlungvelSolar TlungvelSolar TlungvelSolar TlungvelSolar TlungvelSolar TlungvelSolar Power_Drawal_from_23.07.2021___24.07.2021」に変更されます (繰り返しの数は、Windows の最大 256 文字のファイル パス制限によって制限されます)。
名前を変更したいのは「TlungvelSolar Power_Drawal_from_23.07.2021___24.07.2021」です。
繰り返しになりますが、ファイル数が少ない場合は正常に動作しますが、ファイル名にも依存するようです。
答え1
問題はパイプラインにアイテムを投入することで発生しますソースを変更しながら。[ニヤリ] これにより、同じアイテムを再処理することが非常に簡単になり、コードからは別のアイテムのように見えます。
修正方法は、以下の解決策のいずれかのようになります...
- すべてのアイテムを$Varに取り込み、それを完全なコレクションパイプラインに
- 呼び出しを括弧で囲むと
G-CI
、呼び出しですべてを取得するように強制します。一度 foreach
ループを使用する
私は 3 番目の方法を好みます。これは、はるかに単純で、より明白な一連の手順になり、デバッグが容易になるからです。[ニヤリ]