Hola a todos, escribo este post ya que como al anterior nadie supo darle una solución haber si a alguien se le ocurria como hacer un script que escribiera en un TXT todas las carpetas y carpetas dentro de esas carpetas.
que haya en la carpeta "ms0:/MUSIC" por ejemplo.
Aquí os dejo un esquema de lo que quiero hacer.
Ejemplo de cómo quedaría el TXT:
ms0:/MUSIC ms0:/MUSIC/A ms0:/MUSIC/B ms0:/MUSIC/C ms0:/MUSIC/D ms0:/MUSIC/A/A1 ms0:/MUSIC/C/C1 ms0:/MUSIC/C/C2 ms0:/MUSIC/D/D1
¿Alguien me puede ayudar? Se lo agradecería mucho
Solución gracias a Zerozelta
TXT = io.open("Directs.txt","w") usb.on() function printDir(path) local tab = files.list(path) for i = 1,#tab do local f = tab[i] if f.directory then text = text.."\n"..printDir(f.name) else text = text.."\n"..f.name end --Esto es para saber como va el proceso, no es necesario screen.print(5,5,i.."/"..#tab) --Indica el numero de carpetas y el numero de carpeta que esta leyendo screen.print(5,20,f.name) --Indica el nombre de la carpeta que está leyendo screen.print(5,35,text) --Indica todas las carpeta ya leidas screen.flip() os.sleep(1) --Pausamos un segundo para que nos de tiempo a leer end return text end TXT:write(printDir("ms0:/MUSICA")) TXT:flush() os.message("Proceso finalizado") TXT:close() os.exit()
Sígueme en Twitter: @Aitor_db
para eso puedes hacer un
para eso puedes hacer un algoritmo recursivo, aqui un ejemplo:
(Nota: no lo he probado, pero si no me equivoco esa funcion te devuelve un texto con todos los archivos y subdirectorios de la ruta uqe le pases como argumento)
Solamente tienes que llamar a la funcion printDir([pat]) y escribir su contenido en el archivo de texto
Si falla en algo avisame
Saludos¡¡
By Aitor
Muchísimas gracias, al final con tu code y dos o tres cambios de algunos pequeños fallos he conseguido que funcione, muchas gracias
Sígueme en Twitter: @Aitor_db
Buen ejemplo.
Si fuesen muchos archivos o carpetas sería más recomendable hacer:
Mmmm...
En realidad en este caso es lo mismo, la velocidad será la misma.
Explico: Al "declarar" el for, se almacena automáticamente el límite, es decir, la operación de longitud se ejecuta una sola vez en el bucle, mira este ejemplo:
Al correrlo sale:
Saludos!
PSP FAT [5.00 M33-6] [6.60 ME] [Hard Moded] / Nintendo Wii [4.1U] [cIOS Hermes] [D2X cIOS] / iPhone 3G [4.2.1] [BB 05.13.04] [redsn0w] / iPod Touch 4 [6.1] [evasi0n]
07/05/10: Tuve el placer de llamarle con todo derecho "N00B" a molotovi xDDD
Recuerda: Sé el intérprete -_-
De eso quería saber yo hace tiempo...
¿Como se haria para que en cada pasada calculara el maximo una y otra vez? :D
Sencillo
Simplemente cada vez que hagas:
Saludos Dove ;)
Edito:
Utilizando un bucle que se repita por supuesto.
Que es lo que quieres hacer?
Que es lo que quieres hacer? para que necesitas calcular el máximo? Por si eliminas/agregas contenido a la tabla al vuelo?
mmmm
Se me ocurriría con una variable global que cambie dentro del bucle, pero no lo veo útil, y además creo que pueden haber problemas...
PSP FAT [5.00 M33-6] [6.60 ME] [Hard Moded] / Nintendo Wii [4.1U] [cIOS Hermes] [D2X cIOS] / iPhone 3G [4.2.1] [BB 05.13.04] [redsn0w] / iPod Touch 4 [6.1] [evasi0n]
07/05/10: Tuve el placer de llamarle con todo derecho "N00B" a molotovi xDDD
Recuerda: Sé el intérprete -_-
mmmmm creo que no es
mmmmm creo que no es necesario el
if f.directory == true then
ya que al poner
if f.directory
eso verificara que sea un directorio,sin nececidad de el booleano.. solo es una idea :)
De hecho es lo mismo, una
De hecho es lo mismo, una condición tipo if variable then ... end ejecutará su code si la variable tiene CUALQUIER valor, excepto false o nil (es decir, pongas o no pongas el == true, igual hace la comparación).