{ From: russchinoy@aol.com (RussChinoy) >Does anyone have know of where I can get a hold of a routine to delete >all files off a floppy disk regardless, including all subdirectores? Here's the source to a little DOS utility that I wrote to do exactly what you are looking for (actually, it's slightly more flexible since you can specify the starting directory; you can just specify the root), using a recursive routine. } {$A-,B-,D-,E-,F-,G-,I-,L-,N-,O-,R-,S-,V-,X+} {$M 65520, 0, 0} PROGRAM XRD; { This program deletes all files and subdirectories below the specified directory, and then removes the specified directory as well. } USES Dos, OpDos, OpCrt, OpString; CONST Version = '1.01'; VAR XRDPath : PathStr; f : file; {************************************************************************* **} PROCEDURE Init; VAR TempPath : PathStr; c : char; BEGIN writeln; writeln('XRD, Version ', Version, ', Copyright (c) 1992 RC Software'); writeln; IF paramcount <> 1 THEN BEGIN writeln(' Purpose: XRD removes the specified directory, and'); writeln(' all files and subdirectories under it.'); writeln; writeln(' Syntax: XRD [d:]'); writeln; writeln(' Where: d: is an optional drive specifier, and'); writeln(' is the path to be removed.'); writeln; halt(1); END; XRDPath := paramstr(1); IF NOT IsDirectory(XRDPath) THEN BEGIN writeln('Error: specified path not found.'); writeln; halt(2); END; XRDPath := fexpand(XRDPath); IF XRDPath[length(XRDPath)] <> '\' THEN XRDPath := XRDPath + '\'; XRDPath := StUpCase(XRDPath); TempPath := copy(XRDPath, 1, length(XRDPath) - 1); writeln('WARNING!! You are about to remove the following directory'); writeln(' (and delete all files and subdirectories under it):'); writeln(' '#16' ', TempPath, ' ', #17); write('Continue (Y/N)? '); REPEAT c := upcase(readkey); IF c = #0 THEN BEGIN c := readkey; c := #255; END; UNTIL c in ['Y', 'N']; writeln(c); writeln; IF c = 'N' THEN halt(3); END; {************************************************************************* **} PROCEDURE DeleteAllFilesInDir(DirName : PathStr); VAR s : searchrec; BEGIN FindFirst(DirName + '*.*', AnyFile, s); WHILE DosError = 0 DO BEGIN IF (s.Attr <> Directory) AND (s.name <> '.') AND (s.name <> '..') THEN BEGIN gotoxy(1, wherey); clreol; write('Deleting: ', DirName + s.name); Assign(f, DirName + s.name); erase(f); IF IOResult <> 0 THEN BEGIN SetFAttr(f, Archive); erase(f); IF IOResult <> 0 THEN BEGIN gotoxy(1, wherey); clreol; writeln('Error: unable to delete ', DirName + s.name); END; END; END ELSE IF (s.Attr = Directory) AND (s.name <> '.') AND (s.name <> '..') THEN DeleteAllFilesInDir(DirName + s.name + '\'); FindNext(s); END; IF (length(DirName) > 1) AND NOT ((length(DirName) = 3) AND (DirName[3] = '\')) THEN BEGIN gotoxy(1, wherey); clreol; write('Removing: ', copy(DirName, 1, length(DirName) - 1)); rmdir(copy(DirName, 1, length(DirName) - 1)); IF IOResult <> 0 THEN BEGIN gotoxy(1, wherey); clreol; writeln('Error: unable to remove ', copy(DirName, 1, length(DirName) - 1)); END; END; END; {************************************************************************* **} BEGIN Init; DeleteAllFilesInDir(XRDPath); gotoxy(1, wherey); clreol; writeln('Done.'); writeln; END.