lunes, 22 de febrero de 2016

Renombrar los ficheros de una carpeta con Notepad++ y BAT


 Esta primera entrada la voy a dedicar a un par de scripts que realicé hace algún tiempo para listar y renombrar los ficheros de una carpeta. Me decanté por bat porque lo domino y quería practicarlo un poco, pero desde luego no me parece el mejor lenguaje de scripting para el manejo de cadenas.
 La motivación de estos scripts es poder aprovechar la potencia del editor de columnas y las expresiones regulares de notepad++ para poder renombrar ficheros rápidamente. Como por ejemplo carpetas de canciones, series, etc.

Los script se pueden encontrar en mi github:
Ficheros(listar).cmd.
Ficheros(renombrar).cmd.

¿Qué hacen estos scripts?

 El primero de ellos (listar), guarda en un fichero "nombres.txt" el nombre de todos los elementos del directorio donde se encuentra este script.
Lo especial de este script, es que después de cada nombre agrega el carácter ':' y de nuevo el nombre del elemento. Además alinea por el centro todas las líneas del fichero dejando justo en el centro el carácter ':'.
Puede parecer algo extraño, pero después explicaré el por qué de hacerlo así.

El segundo (renombrar), toma todos los nombres antes del ':' y los renombra según el nombre que hay después de este caracter. Finalmente borra los 2 scripts y el fichero "nombres.txt".


¿Cómo y para qué usar estos scripts?

 Yo recomendaría tener los scripts a mano en el escritorio o en alguna carpeta fácilmente accesible.
Cuando desees usarlos, copia los dos scripts a la carpeta donde están los ficheros a renombrar y ejecuta el primero de ellos (listar).


Ejemplo de la carpeta.
Carpeta con los ficheros a renombrar, los scripts y el fichero
"nombres.txt" que contiene el contenido de esta carpeta.
En la imagen anterior se muestra un ejemplo donde existe unos ficheros cuyo nombre contiene los caracteres %20 en lugar de un espacio. Estos serán los ficheros que queremos renombrar.

Una vez ejecutado el script de listar, abrimos el fichero "nombres.txt" con el notepad++.
Los nombres de la primera columna (todos los que están antes del ':') son los nombres originales del fichero y por tanto no los tocaremos. Los de la segunda columna (los de después del ':') son los que renombraremos.

Antes de seguir, recomiendo actualizar el notepad++ a una versión que soporte el modo columna (Algunas versiones antiguas no lo tienen).

Ejemplo de la carpeta.
Contenido del fichero "nombres.txt" visto desde notepad++.


Ahora simplemente coloca el cursor donde pone el primer %20 y mientras mantienes pulsado Shift + Alt pulsa la flecha abajo y selecciona todos los %20. Si no están alineados, puedes usar la opción de buscar y remplazar, pero ojo que solo queremos modificar las cadenas que están después del caracter ':'. Con este segundo metodo vamuy bien las expresiones regulares.
Cuando tengas editado el fichero, simplemente ejecuta el script Ficheros(renombrar).cmd y se renombrarán todos los ficheros además de borrarse los 2 scripts y el fichero "nombres.txt". Esto es así para ahorrar tiempo.


Y hasta aquí la primera entrada.
Pensaba hacerla más larga y explicar al detalle como funcionan los scripts, pero por no retrasar más la entrada ni hacerla más larga la dejare así.
Espero que le sea de utilidad a alguien.