Recursion... Me trae de cabeza

Tus preguntas. Algoritmos o Grupos de Comandos formando Programas Escripts.
Responder
Avatar de Usuario
Aklxao
Aprendiz de Mago
Mensajes: 30
Registrado: 04 Abr 2008, 13:36
Ubicación: Linares - Jaen

Recursion... Me trae de cabeza

Mensaje por Aklxao »

Bueno, mi problemas es que intento coger todos los mp3 que hay en una carpeta, incluyendo subdirectorios. Me acuerdo que hice un post referido a esto de la busqueda en carpetas desconocidas, lo mire, e intente adaptar los códigos que habían alli a mis necesidades. El problemas es que no consigo que busque en todos los directorios, tan solo busca en la primera carpeta que encuentra y se sale....

Aqui esta el script a ver si ustedes ven el error:

Código: Seleccionar todo

Global $acabar = 0,$d = 1, $c = 1
#include <File.au3>
Global $ru = FileSelectFolder("a","")
CojerMp3($ru)


Func CojerMp3($DIr)

	$DIr = $DIr & "\"
While $acabar = 0
$file = _FileListToArray($DIr,"*.mp3")
		If not @error Then
			For $a = 1 to $file[0]
			IniWrite(@ScriptDir & "\a.ini","MP3",$d,$DIr & $file[$a])
			$d = $d +1
		Next
		$acabar = 1
		Else
			ExitLoop
		EndIf
	WEnd
	$acabar = 0
	While $acabar = 0
			Global $files = _FileListToArray($DIr,"*.*",2)
			If not @error Then
				For $a = 1 to $files[0]
					MsgBox(0,"",$files[$a])
				CojerMp3($ru & "\" & $files[$a])

			Else
				Global $filemp3 = _FileListToArray($DIr,"*.mp3")
				If not @error Then
			For $a = 1 to $file[0]
			IniWrite(@ScriptDir & "\a.ini","MP3",$d,$DIr & $file[$a])
			$d = $d +1
		Next
		Else
				ExitLoop
		EndIf

			Next
			Exit
		EndIf
	WEnd

EndFunc
llevo ya un par de días dándole vueltas al código y siempre consigo el mismo resultado... así que... espero vuestra ayuda :smt003

Saludos!! :smt023
Querer es poder... Recuerdalo, podras hacer cosas extraordinarias...
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Recursion... Me trae de cabeza

Mensaje por Chefito »

Te dejo un post donde hice dos funciones utilizando recursión para la búsqueda de ficheros. Acepta búsquedas como *.mp3. Si lo quieres filtrar a .mp3 solamente tienes que cambiar de la función de búsqueda la variable $fichero_a_buscar a "*.mp3", o pasarle lo que te dije anteriormente.
Cualquiera de las dos funciones vale.
Hay más gente que participó con sus códigos. Miralos y el que más te guste y no falle (creo que alguno fallaba en la búsqueda.....los mios creo recordar que no :smt002 ) lo eliges y lo adaptas a tu programa.
Mira el tema entero. También puedes mirar el estudio que hice en el último post para ver que código era el más rápido.

http://www.emesn.com/autoitforum/viewto ... sion#p2550

Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2091
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Recursion... Me trae de cabeza

Mensaje por BasicOs »

Creo que debes usar la función FileFindFirstFile y otras similares en vez del Array.

Aquí va un ejemplo,

http://www.emesn.com/autoitforum/viewto ... File#p2511

Y una busqueda de bastantes casos:
http://www.emesn.com/autoitforum/search ... dFirstFile

Salu2:)
Avatar de Usuario
Aklxao
Aprendiz de Mago
Mensajes: 30
Registrado: 04 Abr 2008, 13:36
Ubicación: Linares - Jaen

Re: Recursion... Me trae de cabeza

Mensaje por Aklxao »

Gracias Chefito, por fin ha encontrado todas las canciones, yo probe en el post que hice sobre el buscador, con el codigo que tenia 2 while y... al no funcionarme pues intente hacerlo yo por mi cuenta y... el resultado no fue desastroso pero si un poco decepcionanate. En fin, gracias de nuevo por la ayuda, espero que la próxima vez que me salga algo con recursión pueda hacerlo solo :smt003

Saludos!!! :smt023
Querer es poder... Recuerdalo, podras hacer cosas extraordinarias...
Responder