>>*Procedure file FSOTree >>FUNCTION GetTreeUsingFSO >>LPARAMETER taReturnArray, tcBaseFolder >>EXTERNAL ARRAY taReturnArray >>IF VARTYPE(tcBaseFolder) # 'C' OR ! DIRECTORY(FULLPATH(tcBaseFolder)) >> tcBaseFolder = FULLPATH(CURDIR()) >>ENDIF >>LOCAL oFSO, oTopFolder >>oFSO = CREATEOBJ('Scripting.FileSystemObject') >>oTopFolder = oFSO.GetFolder(tcBaseFolder) >>DIMENSION taReturnArray[1] >>taReturnArray = NULL >>RecurseSubFoldersUsingFSO(oTopFolder,@taReturnArray) >>RETURN ALEN(taReturnArray) >> >>FUNCTION RecurseSubFoldersUsingFSO >>LPARAMETERS toFolderObj, taReturnArray >>EXTERNAL ARRAY taReturnArray >>LOCAL nSizeOfArray,oSubFolders >>nSizeOfArray = ALEN(taReturnArray) + IIF(ISNULL(taReturnArray[1]),0,1) >>DIMENSION taReturnArray[nSizeOfArray] >>taReturnArray[nSizeOfArray] = toFolderObj.path >>oSubFolders = toFolderObj.SubFolders >>FOR Each oFolder IN oSubFolders >> RecurseSubFoldersUsingFSO(oFolder,@taReturnArray) >>ENDFOR >>RETURN >> >>SET PROC TO FSOTree ADDITIVE >>DECLARE aSubDirs[1] >>? GetTreeUsingFSO(aSubDirs,'C:\') >>disp memo like aSubDirs >> >>* The first function of the pair just does the setup of the FSO and array; do it yourself, >>* and you can get several paths' trees into the same array >> >>SET PROC TO FSOTree ADDITIVE >>LOCAL oFSO, oTopFolder, aSubDirs[1] >>aSubDirs[1] = NULL >>oFSO = CREATEOBJ('Scripting.FileSystemObject') >>oTopFolder = oFSO.GetFolder('C:\Windows') >>RecurseSubFolders(oTopFlder,@aSubDirs) >>oTopFolder = oFSO.GetFolder('C:\Program Files') >>RecurseSubFolders(oTopFolder,@aSubDirs) >>disp memo like aSubDirs>