Powershell Rename-Item повторяется, если количество файлов велико

Powershell Rename-Item повторяется, если количество файлов велико

(Я просто опубликую здесь каждый путь. Это кажется неловко интимным, но какой вред это может принести, верно?)

Вот моя командная строка 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}") и отлично работает, если количество файлов в каталоге небольшое. Но если количество файлов достигает определенного порога, процесс просто повторяется бесконечно и приводит к ошибке, указанной выше, для каждого файла.

Например, одно из имен файлов — «Power_Drawal_from_23.07.2021___24.07.2021»

Если количество файлов превышает 22 (для этого имени файла), он переименовывается в «TlungvelSolar 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петлю

Я предпочитаю третий вариант, так как он обеспечивает гораздо более простой и очевидный набор шагов... и, следовательно, его легче отлаживать. [ухмылка]

Связанный контент