Renombrar archivos

Hola Eolianos!!!

Pues resulta que tengo unos archivos los cuales quiero renombrar automaticamente de la siguiente manera:

Los archivos estan asi: NombreDeArchivo.extension

Lo que me gustaria es dejarlo asi: Nombre De Archivo.extension

Es decir, poner un espacio delante de cada letra mayuscula para dejarlo separado.

He visto varios programas de renombracion masiva, pero no encuentro ninguno que me permita separar de esta manera los archivos.

Os estaria agradecido si me dijerais con que programa podria hacer esta operacion y mejor aun si me decis que opciones tengo que poner a dicho programa para poder realizarla, ya que algunos renombradores son un poco complicados de utilizar.

Muchas gracias de antemano.
Me temo que vas a tener que hacerlo manualmente porque lo que ve el programa es esto:
    ???????????????.extensión > ?????? ?? ???????.extensión
Al ser sólo letras y estar juntas, el programa no puede hacer nada ya que no es inteligente.
No sé si me entiendes, es difícil de explicar

Saludos.
Hola Serede, gracias por contestar!!!

Hombre, no conozco todos los programas renombradores, pero estoy seguro que alguien conocera alguno que le puedas decir de buscar "expresiones" y decirle que busque letras mayusculas para poder hacer algo con ellas.

Ya te digo que no he encontrado dicho programa, por eso os pregunto a vosotros, pero vamos... seguro que debe estar inventado... Falta que alguien lo sepa para poder solucionar el problema...

A ver si hay un poco de suerte...

Saludos.
Si conoces alguno que maneje expresiones regulares, no debería ser complicado.

Por ejemplo, con sed se puede añadir un espacio antes de cada mayúscula sustituyendo cada mayúscula (excepto la primera) por un espacio más la mayúscula del siguiente modo:

sed 's/[A-Z]/\ &/g2'


No sé si hay sed para Windows, creo que sí, pero no creo que sea lo que buscas, ¿no?

Ya que estoy, como ejemplo, desde una terminal sería sencillo hacerlo en todos los archivos (esto fallaría si hubiera archivos con espacios):

for i in `ls -1`; do A=`echo $i | sed 's/[A-Z]/\ &/g2'`; cp $i "$A"; done


Desde windows me imagino que podría hacerse de una forma similar.

Pero amos, lo dicho, si encuentras algún programa de eso que maneje expresiones regulares, inténtalo con ése y si no lo consigues avisa.

Edito:

Bueno, he buscado como 10seg y he encontrado esto: http://www.adictosaltrabajo.com/tutoria ... na=flexren

Con el programa ése, usando expresiones regulares, es muy sencillo.
Hola amuchamu!!

He encontrado el siguiente programa http://siren.softonic.com/ pero no se si podre poner las expresiones tal como tu me dices...

¿Podria hacerlo desde una consola en windows vista?

Gracias
Gracias Serede!!!

Parece que el Sed no funciona bien en vista... Me dice que falta una dll al arrancar el programa libintl3.dll
Evil_forces escribió:Gracias Serede!!!

Parece que el Sed no funciona bien en vista... Me dice que falta una dll al arrancar el programa libintl3.dll

Eso es porque los de gnuwin32 no incluyen las DLLs en los paquetes de binarios (no me preguntes porqué xD).
Con el instalador te funcionará.

Saludos.
Bueno, si usas sed tendrás que tocar batch, a ver si sabe Serede porque yo de batch no tengo ni idea.

Tienes que listar cada archivo, ejecutar sed sobre cada uno y mover cada archivo del nombre de origen al nombre que saque sed. Primero haz una prueba con una copia de unos pocos archivos y copiando en vez de moviendo/renombrando. No sé si me he explicado ^^

Eso en linux lo hago con el bucle for, pero en batch no sé cómo se hace.
Puffff... lo veo complicado con el sed... Lo he instalado, pero creo que tendre que ejecutarlo desde una consola de windows ¿no? ya que al ejecutarlo aparece una consola y se cierra automaticamente...

Pregunto, ¿Sabeis si con el programa Siren, que admite expresiones, se podria hacer de forma mas facilonga?


Gracias.
Sí, sed es sólo desde terminal/consola, y además tendrías que valerte de batch para aplicarlo a todos los archivos del directorio.

Con siren o el otro que te he dicho me imagino que se podría hacer pero no sé cómo van esos programas y no los puedo instalar, no tengo windows.
Creo que con Siren se hace asi:

The following examples use regular expressions.
I won't enter here into the details of the syntax.

* Separate words with spaces

From:
APhotoOfAGarden.jpg

To:
A Photo Of A Garden.jpg

Use the expression:
%b(s/(.)(\u)/$1 $2/g)(s/(\u)(\u)/$1 $2/g).%e

Voy a probar a ver si puedo hacerlo.
Batch también utiliza FOR y funciona igual que en Bash, así que el código que puso amunchamu debería servirte.

Saludos.
CONSEGUIDO!!!!

Si señor, gracias al Siren he podido hacerlo y en menos de un minuto las 15.000 imagenes que tenia que renombrar.

Muchas gracias tanto a amuchamu como a Serede por vuestros consejos amigos!!!


Espero que esto le sirva a alguien que tenga Windows y necesite hacer la misma operacion.

Un saludo

-=Evil=-
13 respuestas