Cómo cambiar el nombre de varios archivos en una carpeta con PowerShell

Para renombrar varios archivos en una carpeta, se puede usar el Explorador de archivos de Windows. Sin embargo, realizar este proceso de forma manual es tedioso y muy propenso a errores, especialmente cuando se trata de una gran cantidad de elementos.

Afortunadamente, existe una forma más rápida y eficiente de cambiar el nombre de múltiples archivos mediante PowerShell, el potente lenguaje de scripting y consola de comandos de Windows. Con PowerShell, puedes utilizar una sola instrucción para modificar todos los archivos que coincidan con un criterio específico (como contener una palabra clave o tener una extensión determinada) para organizarlos mejor, seguir un patrón definido o eliminar caracteres no deseados.

Índice

Requisitos previos

Antes de ejecutar el proceso, asegúrate de cumplir con lo siguiente:

  • Consola de Windows PowerShell abierta.
  • Conocer la ruta exacta o estar posicionado en el directorio que contiene los archivos a modificar.

Comando base

El comando fundamental que necesitas utilizar sigue esta estructura:

Dir | Rename-Item -NewName { $_.Name -replace 'texto original','nuevo texto' }

Desglose de componentes

Este comando combina varias herramientas de PowerShell mediante el uso de tuberías (pipelines). A continuación, se explica la función de cada elemento:

Componente Descripción
Dir Alias del cmdlet Get-ChildItem. Obtiene todos los elementos del directorio actual. (Nota: Puedes especificar una ruta diferente si deseas operar en otra carpeta).
| Operador de canalización. Envía la salida de datos del primer comando directamente al siguiente.
Rename-Item Cmdlet encargado específicamente de cambiar el nombre de un elemento en el sistema de archivos.
-NewName Parámetro que define el nuevo nombre del elemento. En este formato, se utiliza una expresión entre llaves {} para generar el nuevo nombre de forma dinámica.
$_ Variable especial que representa el elemento actual que está procesando la canalización. Al usar $_.Name, se accede directamente a la propiedad que contiene el nombre del archivo.
-replace Operador que busca y reemplaza una parte de una cadena de texto por otra. Reemplaza el texto original por el nuevo texto. Soporta el uso de expresiones regulares para patrones más complejos.

Ejemplo práctico

Para ilustrar el funcionamiento del comando, supongamos que tienes una carpeta con imágenes y necesitas actualizar tanto su prefijo como su extensión.

Situación inicial

Los archivos actuales en la carpeta son:

foto 1.jpg
foto 2.jpg
foto 3.jpg
foto 4.jpg
foto 5.jpg

El objetivo es cambiar el nombre de todos los archivos para que tengan el prefijo vacaciones en lugar de foto, y cambiar la extensión de .jpg a .png.

Procedimiento

Para aplicar el cambio de manera secuencial en la misma línea, utiliza el siguiente comando:

Dir | Rename-Item -NewName { $_.Name -replace 'foto','vacaciones' -replace '.jpg','.png' }

Resultado

Después de ejecutar el comando, los archivos en tu carpeta quedarán renombrados automáticamente de la siguiente manera:

vacaciones 1.png
vacaciones 2.png
vacaciones 3.png
vacaciones 4.png
vacaciones 5.png

Notas adicionales

Caution

Advertencia de seguridad: Este comando aplica los cambios de forma inmediata y no realiza una copia de seguridad de los archivos originales. Debes tener extrema precaución al usarlo y asegurarte de que los valores proporcionados al operador -replace sean precisos para evitar nombres incorrectos o pérdida de referencias.

Opens in a new tab.