program ddel;
{$APPTYPE CONSOLE}
uses
SysUtils, Classes;
var
maske : string;
function suffix(f : string) : string;
var
i : integer;
begin
i := Length(f);
while (f[i] <> '.') and (i > 0) do dec(i);
if i = 0 then // kein Punkt gefunden
result := ''
else
result := copy(f,i,Length(f)-i+1);
end;
procedure bearbeite(maske : string);
const
FileAttr = faReadOnly+faHidden+faArchive; // zusätzlich zu normalen D.
var
FPfad,Fname,Ftemp : string;
Search : TSearchRec;
FListe : TStringList;
i,pos : integer;
geloescht : boolean;
begin
// Eingabe aufbereiten **** nicht fertig! *****
FPfad := ExtractFilePath(maske);
if FPfad = '' then FPfad := '.\';
if FPfad[Length(FPfad)] <> '\' then FPfad := FPfad+'\';
FName := ExtractFileName(maske);
if FName = '' then FName := '*.*';
maske := FPfad+FName;
// Liste aufbauen
FListe := TStringList.Create;
// Files suchen
if FindFirst(maske,FileAttr,Search) = 0 then
repeat
FListe.Add(FPfad+Search.Name);
until FindNext(Search) <> 0;
FindClose(Search);
// Liste bearbeiten
for i := 0 to Fliste.Count-1 do
begin
if suffix(FListe[i]) = '.exe' then
begin
Ftemp := copy(FListe[i],1,Length(FListe[i])-4);
Ftemp := Ftemp+'.dpr';
pos := FListe.IndexOf(Ftemp);
if pos > -1 then // anscheinend Delphi-Ordner
begin
// aktive und schreibgeschützte Dateien werden nicht gelöscht
geloescht := deleteFile(FListe[i]);
if (ParamStr(2) = 'v') and geloescht then
writeLn(FListe[i]+' wurde geloescht.');
// hier folgen weitere Aktivitäten im Delphi-Ordner
end;
end;
if true then // **** hier eventuell Schalter einbauen
begin
if (suffix(FListe[i])[2]='~') or
(suffix(FListe[i])='.dcu') or
(suffix(FListe[i])='.cfg') or
(suffix(FListe[i])='.dof') or
(suffix(FListe[i])='.ddp')
then
begin
geloescht := deleteFile(FListe[i]);
if (ParamStr(2) = 'v') and geloescht then
writeLn(FListe[i]+' wurde geloescht.');
end;
end;
end;
FListe.Free;
// Unterverzeichnisse bearbeiten
if FindFirst(maske,faDirectory,Search) = 0 then
repeat
if ((Search.Attr and faDirectory) > 0) and
(Search.Name <> '.') and
(Search.Name <> '..')
then
begin
bearbeite(FPfad+Search.Name+'\'+FName);
end;
until FindNext(Search) <> 0;
FindClose(Search);
end;
begin
begin
if ParamCount = 0 then
maske := '.\*.*'
else
if (ParamStr(1) = '?') or
(ParamStr(1) = '/?') or
(ParamStr(1) = 'help') or
(ParamStr(1) = '/h') then
begin
writeLn;
writeLn(' ddel ist ein Werkzeug, um in Delphi-Projekten ueberfluessige');
writeLn(' Dateien zu loeschen.');
writeLn(' ddel wurde vom LK Informatik 12, Abitur 05, HSG Kaiserslautern entwickelt.');
writeLn(' Beta-Version 0.8 vom 12.2.2004');
writeLn;
writeLn(' Als Parameter wird eine Suchmaske wie abc\*.* erwartet.');
writeLn(' Bei Fehlen des Parameters wird .\*.* angenommen.');
writeLn(' Fehlt der FileName, so wird *.* ergaenzt.');
writeLn(' Will man nur den Pfad abc bearbeiten, so ist abc\ anzugeben.');
end
else
maske := ParamStr(1);
writeLn('ddel 0.8');
bearbeite(maske);
end;
end.
|