'Author : Daniel, Master Sourcerer at Kitana's Castle 'Last change: July 27, 2004 'Email : sourcerer@kitana.org 'Recursively scans a directory tree #DIM ALL %MAXDIRS = 256 'Scan a directory and all of its sub-directories SUB SCANDIR(P$) LOCAL F$ LOCAL I& LOCAL NFILES&,NDIRS& LOCAL D$() DIM D$(%MAXDIRS-1) 'scan directory F$=DIR$(P$+"*.*",23) WHILE F$<>"" IF (GETATTR(P$+F$) AND 16)=0 THEN 'a file NFILES&=NFILES&+1 ELSE 'a directory IF F$<>"." AND F$<>".."THEN 'ignore up-directory to avoid endless-loop IF NDIRS&<%MAXDIRS THEN D$(NDIRS&)=F$ NDIRS&=NDIRS&+1 END IF END IF END IF F$=DIR$ WEND 'print result PRINT P$;" ";NFILES&;"files,";NDIRS&;"directories" 'recursively scan sub-directories NDIRS&=MIN&(NDIRS&,%MAXDIRS) FOR I&=0 TO NDIRS&-1 CALL SCANDIR(P$+D$(I&)+"\") NEXT I& END SUB 'Main program FUNCTION PBMAIN& LOCAL P$ 'read starting directory from command line P$=TRIM$(COMMAND$) IF P$=""THEN PRINT"Usage: SCANTREE " EXIT FUNCTION END IF IF RIGHT$(P$,1)<>"\"THEN P$=P$+"\" 'check if this directory exists IF DIR$(P$+"*.*",23)=""THEN PRINT"The specified directory does not exist." EXIT FUNCTION END IF 'start scanning CALL SCANDIR(P$) END FUNCTION