
03/10/2009, 08:19
|
| | 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
%> |