[Back to DIRS SWAG index]  [Back to Main SWAG index]  [Original]

{
LAWRENCE JOHNSTONE

³Can someone give me some code (in TP) that recognizes all Sub-dirs
³and Sub-sub-dirs, etc. in drive C and changes into every single one
³of them one at a time?
}

PROGRAM EveryDir;

USES
  DOS

PROCEDURE ProcessDirs( Path: DOS.PathStr );
VAR
  SR : SearchRec;
BEGIN
  IF Path[Length(Path)] <> '\' THEN { Make sure last char is '\' }
    Path := Path + '\';

  { Change to directory specified by Path.  Handle root as special case }
  {$I-}
  IF (Length(Path) = 3) AND (Copy(Path, 2, 2) = ':\') THEN
    ChDir(Path)
  ELSE
    ChDir(Copy(Path, 1, Length(Path) - 1);
  IF IOResult <> 0 THEN
    EXIT; { Quit if we get a DOS error }
  {$I-}

  { Process all subdirectories of that directory, except for }
  { the '.' and '..' aliases                                 }
  FindFirst(Path + '*.*', Directory, SR);
  WHILE DosError = 0 DO
  BEGIN
    IF ((SR.Attr AND Directory) <> 0) AND
        (SR.Name <> '.') AND (SR.Name <> '..') THEN
      ProcessDirs( Path + SR.Name );
    FindNext(SR);
  END; { while }
END; {ProcessDirs}

VAR
  CurDir : DOS.PathStr;

BEGIN
  GetDir(3, CurDir);  { Get default directory on C }
  ProcessDirs('C:\'); { Process all directories on C }
  ChDir(CurDir);      { Restore default directory on C }
END.

[Back to DIRS SWAG index]  [Back to Main SWAG index]  [Original]