(Ich werde hier einfach jeden Pfad posten. Es fühlt sich seltsam intim an, aber was könnte schon schaden, oder?)
Hier ist meine PowerShell-Eingabeaufforderung:
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
... und so weiter für jede Datei im Verzeichnis.
Der Befehl scheint selbst für einen Poweruser-Anfänger wie mich einfach genug zu sein („ls | Rename-Item -NewName {"TlungvelSolar " + $_.Name}") und funktioniert einwandfrei, wenn die Anzahl der Dateien im Verzeichnis gering ist. Wenn die Anzahl der Dateien jedoch einen bestimmten Schwellenwert erreicht, wiederholt sich der Vorgang einfach unbegrenzt und führt bei jeder Datei zu dem oben genannten Fehler.
Einer der Dateinamen lautet beispielsweise „Power_Drawal_from_23.07.2021___24.07.2021“
Wenn die Dateianzahl 22 überschreitet (für diesen Dateinamen), wird sie in „TlungvelSolar TlungvelSolar TlungvelSolar TlungvelSolar TlungvelSolar TlungvelSolar TlungvelSolar TlungvelSolar TlungvelSolar TlungvelSolar TlungvelSolar TlungvelSolar TlungvelSolar Power_Drawal_from_23.07.2021___24.07.2021“ umbenannt (die Anzahl der Wiederholungen ist durch die maximale Dateipfadbeschränkung von 256 Zeichen von Windows begrenzt).
Jetzt möchte ich es in „TlungvelSolar Power_Drawal_from_23.07.2021___24.07.2021“ umbenennen.
Auch hier funktioniert es einwandfrei, wenn die Anzahl der Dateien geringer ist, und es scheint auch von den Dateinamen abzuhängen.
Antwort1
Ihr Problem wird durch das Einspeisen von Elementen in die Pipeline verursachtbeim Ändern der Quelle.[Grinsen], wodurch es ganz einfach ist, dasselbe Element erneut zu verarbeiten – es SIEHT für den Code wie ein anderes Element aus.
Die Lösung sieht in etwa wie eine der folgenden Lösungen aus …
- nimm alle Elemente in ein $Var und füttere dasKomplette Kollektionin die Pipeline
- Setzen Sie den
G-CI
Anruf in Klammern, um den Anruf zu zwingen, alles zu erfasseneinmal foreach
eine Schleife verwenden
ich bevorzuge die dritte, da sie eine viel einfachere, offensichtlichere Abfolge von Schritten ergibt ... und somit leichter zu debuggen ist. [Grinsen]