[Back to FILES SWAG index] [Back to Main SWAG index] [Original]
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 }
[Back to FILES SWAG index] [Back to Main SWAG index] [Original]