![Powershell Rename-Item se repite si la cantidad de archivos es grande](https://rvso.com/image/1654737/Powershell%20Rename-Item%20se%20repite%20si%20la%20cantidad%20de%20archivos%20es%20grande.png)
(Voy a publicar todos los caminos aquí. Se siente incómodamente íntimo, pero ¿qué daño podría hacer, verdad?)
Aquí está mi símbolo del sistema de 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
... y así sucesivamente para cada archivo del directorio.
El comando parece bastante simple incluso para un usuario avanzado principiante como yo ("ls | Rename-Item -NewName {"TlungvelSolar " + $_.Name}") y funciona bien si la cantidad de archivos en el directorio es pequeña. Pero si la cantidad de archivos alcanza un cierto umbral, el proceso simplemente se repite indefinidamente y arroja el error anterior para cada archivo.
Por ejemplo, uno de los nombres de archivo es "Power_Drawal_from_23.07.2021___24.07.2021"
Si el recuento de archivos cruza 22 (para este nombre de archivo), se le cambia el nombre a "TlungvelSolar TlungvelSolar TlungvelSolar TlungvelSolar TlungvelSolar TlungvelSolar TlungvelSolar TlungvelSolar TlungvelSolar TlungvelSolar TlungvelSolar TlungvelSolar TlungvelSolar Power_Drawal_from_23.07.2021___24. 07.2021" (el número de repeticiones está limitado por el máximo de 256 de Windows límite de ruta de archivo de caracteres).
Ahora quiero que le cambie el nombre a "TlungvelSolar Power_Drawal_from_23.07.2021___24.07.2021"
Nuevamente, funciona bien si la cantidad de archivos es menor y también parece depender de los nombres de los archivos.
Respuesta1
su problema se debe a que introduce elementos en la tuberíamientras cambia la fuente.[sonrisa] eso hace que sea bastante fácil volver a procesar el mismo elemento: PARECE un elemento diferente según el código.
la solución es algo así como una de las siguientes soluciones...
- toma todos los elementos en un $Var y aliméntaloColección completaen la tubería
- envuelva la
G-CI
llamada entre padres para forzar la llamada a tomar todouna vez - usar un
foreach
bucle
Prefiero el tercero, ya que ofrece un conjunto de pasos mucho más simple y obvio... y, por lo tanto, más fácil de depurar. [sonrisa]