(Я просто опубликую здесь каждый путь. Это кажется неловко интимным, но какой вред это может принести, верно?)
Вот моя командная строка 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
петлю
Я предпочитаю третий вариант, так как он обеспечивает гораздо более простой и очевидный набор шагов... и, следовательно, его легче отлаживать. [ухмылка]