PROGRAM DFile; { Purpose: Given, DIR [filespec] /S /B, delete all occurrences of [filespec] } { from the current directory on. } { Example: dir *.bak /s /b | dfile } VAR In_File : TEXT; { for standard input } Key : CHAR; { for user confirmation } Files_Deleted : INTEGER; { for number of files deleted } FUNCTION GetKey : CHAR; { The ASCII code is in AL, which is the place you need } { it to be as the byte return value of a function. } { Provided by Drew Veliath of 1:272/60@fidonet.org } INLINE ( $B4 / $00 / { MOV AH,0 } $CD / $16 ); { INT $16 } PROCEDURE Delete_Files ( VAR In_File : TEXT; VAR Files_Deleted : INTEGER ); VAR Trgt_File : TEXT; { for file to be deleted } File_Spec : STRING; { for filespec entered by user } BEGIN WHILE NOT EOF ( In_File ) DO BEGIN READLN ( In_File, File_Spec ); ASSIGN ( Trgt_File, File_Spec ); {$I-} ERASE ( Trgt_File ); {$I+} IF IORESULT = 0 THEN BEGIN INC ( Files_Deleted ); WRITELN ( 'Deleted ', File_Spec ) END { IF IORESULT = 0 } END { WHILE NOT EOF ( In_File ) } END; { PROCEDURE Delete_Files } BEGIN { main program } WRITE ( 'Are you sure [yn]? ' ); Key := GetKey; WRITELN; Files_Deleted := 0; IF UPCASE ( Key ) = 'Y' THEN BEGIN ASSIGN ( In_File, '' ); { assign In_File to standard input } RESET ( In_File ); Delete_Files ( In_File, Files_Deleted ); CLOSE ( In_File ) END; { IF UPCASE ( Key ) = 'Y' } WRITELN; WRITELN ( Files_Deleted, ' file(s) deleted.' ) END. { main program }