Página 1 de 1

BUSQUEDA

Publicado: 12 Oct 2011, 18:39
por yasmany
Hola señores ...no se si seria posible q me ayuden en realizar una busqueda de los siguientes archivos medinate un for o un while en realidad Uds ME PODRIAN ayudar de como realizar dicha busqueda
Ejemplo
he intentado asi

Código: Seleccionar todo

Dim $aArray[4]

$aArray[0]="archivo.txt"
$aArray[1]="imagen.jpg"
$aArray[2]="proyecto.psd"
$aArray[3]="deber.dock"

$string = ""
FOR $element IN $aArray
    $string = $string & $element & @CRLF
NEXT
If FileExist ("d:\"&$string) Then
MsgBox (0,"archivo",""&$string) ;
EndIf
He intentado de intercambiando la variable ha presentar y me sale el ultimo archivo si es q existe

Tambien como podria obtener lo siguiente
como podria obtener todos los archivo de extension .txt en un directorio ejemplo en el D:\ y busque en todas las carpetas q este contiene y me presente con la direccion completa de donde se encuentran
como abro la ubicacion de una unida algo como poner en cmd START D:\ Y EN AUTOY COMO lo hago?


Espero su pronta respuesta
Zalu2 :smt039

Re: BUSQUEDA

Publicado: 13 Oct 2011, 04:56
por ms999
Hola yasmani hace rato que no toco el autoit ando con mucho trabajo encima...
Lo primero que te digo es que nunca use For In... para mi es novedad pasar por todos los elementos de un arreglo de esa manera, yo usaba el For To para eso... te voy a modificar el ejemplo un poquito metiendo la condicion "If" dentro del bucle for para que te salga un msgbox si encuentra el archivo y lo voy a hacer de las dos maneras, usando For In y For To.

For In...

Código: Seleccionar todo

Dim $aArray[4]

$aArray[0] = "archivo.txt"
$aArray[1] = "imagen.jpg"
$aArray[2] = "proyecto.psd"
$aArray[3] = "deber.dock"

For $element In $aArray
	If FileExists("D:\" & $element) Then
		MsgBox(0, "archivo", "" & $element) ;
	EndIf
Next
For To...

Código: Seleccionar todo

Dim $aArray[4]

$aArray[0] = "archivo.txt"
$aArray[1] = "imagen.jpg"
$aArray[2] = "proyecto.psd"
$aArray[3] = "deber.dock"

For $element = 0 To Ubound($aArray) - 1
	If FileExists("D:\" & $aArray[$element]) Then
		MsgBox(0, "archivo", "" & $aArray[$element])
	EndIf
Next
Respecto a encontrar todos los archivos con una extension especifica dentro de una carpeta que contiene mas carpetas, deverias usar una funcion recursiva.. Esto significa una funcion que se llama a si misma dentro de ella, hay un par de reglas para hacer esto y evitar que el script crashee, la mejor explicaciòn de esto la encontre en la wiki del foro de AutoIt en Inglés.
http://www.autoitscript.com/wiki/Recursion
Si te cuesta entenderlo pregunta y ahondamos la explicación aca y en castellano, no es molestia preguntar :smt023
Igualmente te dejo un code que busca los archivos txt en todas los subdirectorios del disco "D" para que veas como ejemplo... este code es una modificación del que vas a encontrar en el link que te dejé aca.

Disculpá si tardé en contestarte el mensaje que me mandaste pero ando trabajando tanto que si te dijiera cuanto llamarias a una organización de derechos humanos para que interviniera la empresa en la que estoy trabajando... sin exagerar!

Código: Seleccionar todo

ListFiles_Recursive("D:\", "txt")

Func ListFiles_Recursive($sSourceFolder, $sExtension)

    Local $sFile

    ; Force a trailing \
    If StringRight($sSourceFolder, 1) <> "\" Then $sSourceFolder &= "\"

    ; Start the search
    Local $hSearch = FileFindFirstFile($sSourceFolder & "*.*")
    ; If no files found then return
    If $hSearch = -1 Then Return ; This is where we break the recursive loop <<<<<<<<<<<<<<<<<<<<<<<<<<

        ; Now run through the contents of the folder
        While 1
            ; Get next match
            $sFile = FileFindNextFile($hSearch)
            ; If no more files then close search handle and return
            If @error Then ExitLoop  ; This is where we break the recursive loop <<<<<<<<<<<<<<<<<<<<<<<<<<

            ; Check if a folder
            If @extended Then
                ; If so then call the function recursively
                ListFiles_Recursive($sSourceFolder & $sFile, $sExtension)
            Else
                ; If a file than write path and name
                If StringRight($sFile,3) = $sExtension then ConsoleWrite("Found: " & $sSourceFolder & $sFile & @CRLF)
            EndIf
        WEnd

        ; Close search handle
        FileClose($hSearch)

EndFunc   ;==>ListFiles_Recursive