buscar fichero

30/10/2003 - 11:27 por olga | Informe spam
Buenas,
necesito saber como puedo buscar si un fichero existe en el Pc donde se
ejecuta mi aplicaicon, no se el path donde puede estar por lo que las
instrucciones file() se me queda corta y no se si existe alguna
instruccion o metodo para poder buscarlo en todo el Pc.

Gracias de antemano


PortalFox :: Nada corre como un zorro
http://www.portalfox.com

PortalFox - NNTP Forum Gateway
 

Leer las respuestas

#1 Alberto Gonzalez Alonso
30/10/2003 - 12:32 | Informe spam
Esto te puede servir...

(sigo necesitando ayuda con ADIR() si algien pudiese echarme un cable...)

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&
&& Devuelve una lista de los ficheros (ruta incluida) que se corresponden
con los parámetros
&& de búsqueda dentro del directorio especificado...
&&
&& Parámetros (recibidos)
&& tcDir: Directorio base
&& @taResArray: Lista de ficheros obtenidos
&& tcNom: Nombre del fichero
&& Si está vacío NO buscará
&& Si es * buscará todos los ficheros
&& Si comienza por * localizará los ficheros coincidentes por la derecha
&& Si termina en * localizará los ficheros coincidentes por la izquierda
&& tcExt: Extensión del fichero
&& Si está vacío buscará los ficheros sin extensión
&& Si es * buscará todos las extensiones (excepto la vacía)
&& Si comienza por * localizará los ficheros con extensión conincidente
por la derecha
&& Si termina en * localizará los ficheros con extensión por la izquierda
&& tlRec: Indica si la búsqueda se hará de forma recursiva
&&
&& Parámetros (devueltos)
&& devolverá el número de coincidencias encontradas
&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

function FWEF_BuscaFicheros(tcDir,taResArray,tcNom,tcExt,tlRec)
external array taResArray
local lnI,lnNum,laDir,laFic,lcNBFic,lcEXFic,lcNBExp,lxEXExp,lnNFic

dimension taResArray[1]
dimension laDir[1]
lnNFic = 0

if !empty(tcNom)

&& Creo una lista de los directorios a explorar
if tlRec
FWEF_DirectoriosAnidados(tcDir,@laDir)
wait clear
else
laDir[1] = tcDir
endif

&& Determino las expresiones de evaluación, para el nombre y la extensión
do case
case empty(tcExt)
lcEXExp = "(empty(lcEXFic))"

case (tcExt == "*")
lcEXExp = "(.T.)"

case (left(tcExt,1) == "*")
lcEXExp = "('"+right(upper(tcExt),len(tcExt)-1)+"' =upper(right(lcEXFic,"+str(len(tcExt)-1)+")))"

case (right(tcExt,1) == "*")
lcEXExp = "('"+left(upper(tcExt),len(tcExt)-1)+"' =upper(left(lcEXFic,"+str(len(tcExt)-1)+")))"

otherwise
lcEXExp = "('"+upper(tcExt)+"' == upper(lcEXFic))"
endcase

do case
case (tcNom == "*")
lcNBExp = "(.T.)"

case (left(tcNom,1) == "*")
lcNBExp = "('"+right(upper(tcNom),len(tcNom)-1)+"' =upper(right(lcNBFic,"+str(len(tcNom)-1)+")))"

case (right(tcNom,1) == "*")
lcNBExp = "('"+left(upper(tcNom),len(tcNom)-1)+"' =upper(left(lcNBFic,"+str(len(tcNom)-1)+")))"

otherwise
lcNBExp = "('"+upper(tcNom)+"' == upper(lcNBFic))"
endcase


for lnI = 1 to alen(laDir,1)
if vartype(laDir) == "C"
dimension laFic[1]
laFic[1] = .F.

&& Busco los ficheros coincidentes
if !empty(adir(laFic,laDir[lnI]+"*.*","AHRS"))

&& Compruebo cuales cumplen las condiciones
for lnNum = 1 to alen(laFic,1)
lcNBFic = juststem(laFic[lnNum,1]) && Nombre del fichero
lcEXFic = justext(laFic[lnNum,1]) && Extensión del fichero

if evaluate(lcNBExp) .AND. evaluate(lcEXExp)
if !empty(taResArray[alen(taResArray,1)])
dimension taResArray[alen(taResArray,1)+1]
endif
taResArray[alen(taResArray,1)] = laDir[lnI] + laFic[lnNum,1]
lnNFic = lnNFic + 1
endif
endfor

endif
endif
endfor
wait clear

endif

return lnNFic
endfunc




&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&
&& Devuelve una lista con la ruta completa / o no de todos los directorios
contenidos
&& en el directorio pasado como parámetro
&&
&& Parámetros (recibidos)
&& lcDirectorio : Directorio base
&& @taResArray: Lista de directorios obtenidos
&& lnMod : Modelo de la información a devolver
&& 0/.F., Solo devuelve el nombre de los directorios 'X:\DIR1\DIR2\'
&& 1 Nombre del directorio,atributos, fecha y hora
&& tlLock : (.T.) Búsca únicamente en el directorio actual (.F.) Explora
todos
&&
&& Parámetros (devueltos)
&& Devuelve el nº de directorios encontrados
&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&


function FWEF_DirectoriosAnidados(lcDirectorio,taResArray,lnMod,tlLock)
external array taResArray
local laDirArray,lnCnt,lnNDir

dimension laDirArray[1,5]

do case
case empty(lnMod) && Solo el nombre
lcDim = "dimension taResArray[alen(taResArray,1) + 1]"

case lnMod = 1 && El nombre y sus propiedades
lcDim = "dimension taResArray[alen(taResArray,1) + 1,4]"
endcase

if directory(lcDirectorio)
if empty(taResArray[1])
taResArray[1] = lcDirectorio
endif
&& Si no hay ningún problema al acceder a la información...
if !empty(adir(laDirArray,lcDirectorio+"*.*","AHRSD"))
for lnCnt = 1 to alen(laDirArray,1)
if ("D" $ laDirArray[lnCnt,5])
if (laDirArray[lnCnt,1] # ".") .AND. (laDirArray[lnCnt,1] # "..")

if
iif(empty(lnMod),!empty(taResArray[alen(taResArray,1)]),!empty(taResArray[alen(taResArray,1),1]))
&lcDim && Redimensiono
endif

if empty(lnMod)
taResArray[alen(taResArray,1)] = addbs( lcDirectorio +
laDirArray[lnCnt,1] )
else
taResArray[alen(taResArray,1),1] = addbs( lcDirectorio +
laDirArray[lnCnt,1] )
taResArray[alen(taResArray,1),2] = laDirArray[lnCnt,3] && Fecha
taResArray[alen(taResArray,1),3] = laDirArray[lnCnt,4] && Hora
taResArray[alen(taResArray,1),4] = laDirArray[lnCnt,5] && Atributos
endif

if !tlLock
FWEF_DirectoriosAnidados(iif(empty(lnMod),taResArray[alen(taResArray,1)],taResArray[alen(taResArray,1),1]),@taResArray,lnMod)
endif

endif
endif
endfor
endif
lnNDir = alen(taResArray,1)
else
lnNDir = 0
endif

return lnNDir
endfunc


PortalFox :: Nada corre como un zorro
http://www.portalfox.com

PortalFox - NNTP Forum Gateway

Preguntas similares