Te sugerimos que pruebes esta resolución en un entorno controlado antes de pasarlo a producción, saludos.
Solución:
Del ejemplo 4 en la documentación de ayuda de Rename-Item
recuperado con el comando:
get-help Rename-Item -examples
Ejemplo:
Get-ChildItem *.txt| Rename-Item -NewName $_.Name -replace '.txt','.log'
Tenga en cuenta la explicación en la documentación de ayuda para la barra invertida de escape en el comando de reemplazo debido a que usa expresiones regulares para encontrar el texto para reemplazar.
Para asegurar la expresión regular -replace
operador coincide sólo con una extensión al final de la stringincluye la expresión regular final destring personaje $
.
Get-ChildItem *.txt | Rename-Item -NewName $_.Name -replace '.txt$','.log'
Esto soluciona el caso mencionado por @OhadSchneider en los comentarios, donde podríamos tener un archivo llamado lorem.txt.txt
y queremos terminar con lorem.txt.log
en vez de lorem.log.log
.
Ahora que la expresión regular está lo suficientemente ajustada e inspirada en la respuesta de @etoxin, podríamos hacer que el comando sea más útil de la siguiente manera:
Get-ChildItem | Rename-Item -NewName $_.Name -replace '.txt$','.log'
Es decir, no hay necesidad de filtrar antes de la tubería si nuestra expresión regular filtra lo suficiente después de la tubería. Y alterando el comando string (por ejemplo, si copia el comando anterior y ahora quiere usarlo para cambiar la extensión de los archivos ‘.xml’) ya no es necesario en dos lugares.
Esto también funciona bien cuando estás en el directorio deseado.
Dir | Rename-Item –NewName $_.name –replace "old","new"
Las respuestas existentes sugieren la -replace
operador, pero ¿y si el archivo se llama a.xml.xml
? Ambas cosas .xml
las subcadenas serán reemplazadas y el resultado final sería a.tmp.tmp
. Afortunadamente, hay un método .NET para esto:
Dir *.xml | rename-item -newname [io.path]::ChangeExtension($_.name, ".tmp")
(Manish Kumar era cercano a GetFileNameWithoutExtension
pero esto es más elegante y probablemente un poco más eficiente, no es que importe demasiado en este caso)
Finalizando este artículo puedes encontrar las explicaciones de otros gestores de proyectos, tú asimismo tienes el poder dejar el tuyo si lo crees conveniente.