procedure TForm1.FindFiles(Apath:string); var FSearchRec,DSearchRec:TSearchRec; FindResult:integer; begin if apath[length(apath)]<>'\' then apath:=apath+'\'; FindResult:=FindFirst(Apath+'*.*',faAnyFile+faHidden+faSysFile+faReadOnly,FSearchRec); try while FindResult=0 do begin //这里写找到文件后的操作 FindResult:=FindNext(FSearchRec); end; FindResult:=FindFirst(Apath+'*.*',faDirectory,DSearchRec ); while FindResult =0 do begin if ((DSearchRec.Attr and fadirectory)=fadirectory) and (leftstr(DSearchRec.Name,1)<>'.') then FindFiles(Apath+DSearchRec.Name); FindResult:=FindNext(DSearchRec ); end; finally FindClose(FSearchRec); end; end;
WinExec('CMD.Exe /k deltree.exe -y c:\temp',sw_hide);
uses shellapi
...
procedure TForm1.Button1Click(Sender: TObject);
var
sf: TSHFileOpStruct;
begin
sf.Wnd:=handle;
sf.pFrom:='d:\temp\temp';
sf.fFlags:= FOF_NOCONFIRMATION;
sf.hNameMappings := nil;
sf.lpszProgressTitle := nil;
sf.pTo := nil;
sf.wFunc := FO_DELETE;
if SHFileOperation(sf)=0 then
ShowMessage('目录成功删除!');
end;
我这样做
遍历文件夹,一一删除文件,删除目录。
-------
判断目录存在
directoryexists uses SysUtils;
var
FSearchRec,DSearchRec:TSearchRec;
FindResult:integer;
begin
if apath[length(apath)]<>'\' then apath:=apath+'\';
FindResult:=FindFirst(Apath+'*.*',faAnyFile+faHidden+faSysFile+faReadOnly,FSearchRec);
try
while FindResult=0 do
begin
//这里写找到文件后的操作
FindResult:=FindNext(FSearchRec);
end;
FindResult:=FindFirst(Apath+'*.*',faDirectory,DSearchRec );
while FindResult =0 do
begin
if ((DSearchRec.Attr and fadirectory)=fadirectory) and (leftstr(DSearchRec.Name,1)<>'.') then
FindFiles(Apath+DSearchRec.Name);
FindResult:=FindNext(DSearchRec );
end;
finally
FindClose(FSearchRec);
end;
end;