Ver Mensaje Individual
  #24 (permalink)  
Antiguo 03/10/2009, 08:19
Moleman
 
Fecha de Ingreso: abril-2006
Mensajes: 69
Antigüedad: 19 años
Puntos: 0
Respuesta: Renombrar todos los archivos de una carpeta

Bueno, finalmente os comento lo que ha pasado, y hasta qué punto he llegado:

Mi código funciona... a medias. He metido todas las carpetas (143) y fotos que había en ellas (2888) para renombrar en la ruta que había preparado para el script, y lo he puesto en marcha... El resultado:

En 22 de las carpetas se producen fallos a la hora de renombrar. El resto funcionan bien.

¿Cuáles son esos fallos? Bueno, pues que si el prefijo que tenía que escribirse delante de cada nombre de archivo era "mini_", en muchos de esos archivos se ha escrito dos veces, o sea, "mini_mini_".

¿Por qué en unos sí y en otros no? El por qué no lo sé aún, pero os pongo algunos ejemplos para que veáis los archivos que se han renombrado mal:

1.jpg --> mini_1.jpg --> BIEN
2.jpg --> mini_2.jpg --> BIEN
3.jpg --> mini_3.jpg --> BIEN
...
Etc. Con números funciona perfectamente, con cualquier número que no sea muy grande)

autobus01.jpg --> mini_mini_autobus01.jpg --> MAL

alevinmasculino.jpg --> mini_alevinmasculino.jpg --> BIEN
alevinf.jpg --> mini_mini_alevinf.jpg --> MAL

Curioso, ¿no? Con textos se renombra bien si son textos largos, pero si son textos cortos se renombra dos veces.

tiro.jpg --> mini_mini_mini_tiro.jpg --> MAL

¡Tres veces se renombra! He comprobado que si el nombre del archivo tiene cuatro letras, renombra tres veces. De cinco a nueve letras, dos veces. A partir de diez letras, lo hace bien.

200805252575064_640.jpg --> mini_mini_200805252575064_640.jpg --> MAL

Como decía antes, si el número es excesivamente grande, funciona mal.

No se generan más archivos, como parecía al principio, sólo que a algunos de ellos los renombra más de una vez, según su nombre previo.

Y eso es todo. No hay quien lo entienda. Yo os pongo el código utilizado, por si a alguien le sirve.

A mí me vale de momento así... Se que no es perfecto ni mucho menos (¡ojalá lo fuera!), pero me ha permitido renombrar miles de archivos en un momento. Es más, ahora tengo que aplicarlo a un par de proyectos más, y con lo que se creo que me va a servir. Me ha ahorrado mucho trabajo... Aunque también es cierto que he perdido muchísimo tiempo intentando hacerlo funcionar. Pero así he aprendido nuevas cosas.

Y todo esto es divertido, ¿no? Es un reto, como un puzzle o enigma, que te va consumiendo y desesperando por momentos, pero que te tiene enganchado hasta que al final consigues hallar la solución.

Si a alguien se le ocurre por qué el código se comporta así, se admiten ideas. Si no, no os preocupéis, yo ya me conformo con lo que tengo.

Y, nuevamente, muchísimas gracias por vuestra paciencia, en especial a Adler y Myakire. Espero que todo este trabajo le pueda servir a alguien.

Saludos.



<%

Server.ScriptTimeout=1200

ruta = server.mappath("/pruebas")

Response.Write("<h1>RUTA: " & ruta & "</h1>")

Set fso = CreateObject("Scripting.FileSystemObject")
Set carpeta = fso.GetFolder(ruta)
For Each subcarpeta in carpeta.subFolders
Response.Write("<h1>CARPETA: " & subcarpeta.Name & "</h1>")

xnumero = 1

For Each archivo in subcarpeta.Files

Response.Write ("<div style='border: 1px solid silver; padding: 10px; margin: 5px;'>")

Response.Write subcarpeta.Name & ("/") & archivo.Name & (" --> ")
archivo.Name = "mini_" & archivo.Name
Response.Write subcarpeta.Name & ("/") & ("<b>") & archivo.Name & ("</b>")

Response.Write ("</div>")

xnumero = xnumero +1

Next

Response.Write "<br><b>TOTAL ARCHIVOS: " & xnumero -1 & "</b>"

Next

Set carpeta = nothing
Set fso = nothing

%>