Pues eso, necesitaba una función que me permitiera tener en una DBF un Arbol de solo Directorios o DIRTREE, con DirectoryRecurse() obtenemos todos los archivos y solo carpetas que contiene archivos, Directory() obtiene todos los archivos y directorios, con o sin archivos, pero para poder acceder a todas las ramas del disco habia que hacer mucho codigo.
No se si alguien tenga el código mejorado, pero para mis necesidades me es suficiente, ya que busque en el foro y no encontre me dedique unas horas a hacer pruebas y se las comparto:
Optimizaciones, opiniones y/o mejoras son bienvenidas..

No se si alguien tenga el código mejorado, pero para mis necesidades me es suficiente, ya que busque en el foro y no encontre me dedique unas horas a hacer pruebas y se las comparto:
#INCLUDE "DIRECTRY.CH"
STATIC aTree:= {}
#IfNDef __XHARBOUR__
FUNCTION DbSkipper( n ) ; RETURN __DbSkipper( n )
FUNCTION DBPACK() ; RETURN __DbPack()
FUNCTION DBZAP() ; RETURN hb_DBZap()
FUNCTION CurDrive( x ) ; RETURN hb_CurDrive( x )
#EndIf
FUNCTION Main()
ArbolDir("C:\WINDOWS\Help") //Puede ser "C:" o un directorio: "C:\Windows"
RETURN Nil
//------------------------------------------------------------------------------------------------------------------//
STATIC FUNCTION ArbolDir(cDir)
LOCAL cletra:= UPPER(cDir)
LOCAL aDirs:= DirTree(cletra)
LOCAL N
IF LEN(aDirs) > 0
FOR N:= 1 TO LEN(aDirs)
MSGInfo("Direcorio: " + aDirs[N],"Origen: "+ cFilePath(aDirs[N]))
NEXT
MSGInfo(ALLTRIM(STR(LEN(aDirs)))+" Carpetas Encontrados", "DIRTREE")
ELSE
MSGStop("Disco "+cletra+" no Válido o Vacio", "DIRTREE")
ENDIF
RETURN Nil
//------------------------------------------------------------------------------------------------------------------//
STATIC FUNCTION DirTree(cDir)
LOCAL aSubDirs,nLen,i
aSubDirs:= GetTreeSubDirs(DIRECTORY(cDir+"\*.*","D"),cDir)
nLen:= LEN(aSubDirs)
IF nLen > 0
FOR I:= 1 TO nLen
AADD(aTree,aSubDirs[I])
CURDRIVE(LEFT(aSubDirs[I],1))
CURDIR(aSubDirs[I])
DirTree(aSubDirs[I])
NEXT
ENDIF
RETURN aTree
//------------------------------------------------------------------------------------------------------------------//
STATIC FUNCTION GetTreeSubDirs(aDirs,cDir)
LOCAL N
LOCAL nLen:= LEN(aDirs)
LOCAL aDirVal:= {}
IF nLen > 0
FOR N:= 1 TO nLen
IF AT("D",aDirs[N,F_ATTR]) > 0 .AND. LEFT(aDirs[N,F_NAME],1)#"."
AADD(aDirVal,cDir+"\"+aDirs[N,F_NAME])
ENDIF
NEXT
ENDIF
RETURN aDirValOptimizaciones, opiniones y/o mejoras son bienvenidas..
Soluciones y Diseño de Software
Damos Soluciones...
I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos
http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
Damos Soluciones...
I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos
http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon