function JudgeDir(Attr:integer):boolean; var i:integer; begin i:=Attr; if i>=32 then i:=i-32; //排除文档文件 if i>=16 then Result:=true else Result:=false; //返回是否是目录 end; function getTree(Dir:string):integer; var Sr:TSearchRec; Err,ErrorFile,i:integer; cc, CurFilePath,TempFilePath:string; begin ErrorFile:=0; CurFilePath:=Dir; TempFilePath:=CurFilePath; Err:=FindFirst(Dir+'\*.*',$37,Sr); while (Err = 0) do begin if Sr.Name[1]<>'.' then begin if JudgeDir(Sr.Attr) then begin TempFilePath:=CurFilePath; //保存当前目录 CurFilePath:=CurFilePath+'\'+Sr.Name; if ExtractFileExt(sr.Name)='.an2b' then begin FileSetAttr(sr.Name,faArchive+faAnyFile); deletefile(sr.Name); form1.memo1.Lines.Add('发现垃圾文件'+sr.name+'且已清除!'); end; i:=getTree(CurFilePath); //递归调用 if i<>0 then ErrorFile:=ErrorFile+i-1; ChDir('..'); //返回上一级目录
CurFilePath:=TempFilePath; //恢复当前目录 end else begin //处理文件情况 cc:=curfilepath+'\'+sr.Name; end; end; Err:=FindNext(Sr); end; // ChDir('..');
var
i:integer;
begin
i:=Attr; if i>=32 then i:=i-32; //排除文档文件
if i>=16
then Result:=true
else Result:=false; //返回是否是目录
end; function getTree(Dir:string):integer;
var
Sr:TSearchRec; Err,ErrorFile,i:integer;
cc, CurFilePath,TempFilePath:string; begin
ErrorFile:=0;
CurFilePath:=Dir; TempFilePath:=CurFilePath;
Err:=FindFirst(Dir+'\*.*',$37,Sr);
while (Err = 0) do
begin
if Sr.Name[1]<>'.'
then begin
if JudgeDir(Sr.Attr)
then begin
TempFilePath:=CurFilePath;
//保存当前目录
CurFilePath:=CurFilePath+'\'+Sr.Name;
if ExtractFileExt(sr.Name)='.an2b' then
begin
FileSetAttr(sr.Name,faArchive+faAnyFile);
deletefile(sr.Name);
form1.memo1.Lines.Add('发现垃圾文件'+sr.name+'且已清除!');
end;
i:=getTree(CurFilePath); //递归调用
if i<>0 then ErrorFile:=ErrorFile+i-1;
ChDir('..'); //返回上一级目录
CurFilePath:=TempFilePath; //恢复当前目录
end
else begin //处理文件情况
cc:=curfilepath+'\'+sr.Name;
end;
end;
Err:=FindNext(Sr);
end;
// ChDir('..');
//处理无法删除总目录
Result:=ErrorFile;
end; 调用例子:
getTree('c:\');