La siguiente función permite borrar los archivos de un directorio "recursivamente", esto es, borrar los archivos de un directorio y de los subdirectorios de este directorio y así sucesivamente.
-prueba
Código Delphi
[-]
uses
SysUtils;
function BorrarArchivos(const directorioRaiz, extension: string;
const borrarRecursivamente, podraDeshacerse: boolean) : boolean;
function Borrar(const directorios: string) : boolean;
var
opciones: Word;
operacion: TSHFileOpStruct;
begin
FillChar(operacion, SizeOf(operacion), #0);
opciones := FOF_MULTIDESTFILES or
FOF_NOCONFIRMATION or FOF_SILENT;
if (podraDeshacerse) then
opciones := opciones or FOF_ALLOWUNDO;
operacion.wFunc := FO_DELETE;
operacion.fFlags := opciones;
operacion.Wnd := GetDesktopWindow;
operacion.pFrom := PChar(directorios);
result := (ShFileOperation(operacion) = 0);
end;
var
sDirs: string;
SR: TSearchRec;
begin
result := false;
sDirs := EmptyStr;
if not DirectoryExists(directorioRaiz) then
Exit;
if borrarRecursivamente then
begin
sDirs := directorioRaiz +'\*.'+ extension +#0;
FindFirst(directorioRaiz +'\*.*', faDirectory, SR);
repeat
if ((SR.Attr and faDirectory) = faDirectory)
and (SR.Name <> '.') and (SR.Name <> '..') then
sDirs := sDirs + directorioRaiz +'\'+ SR.Name +'\*.'+ extension +#0;
until (SysUtils.FindNext(SR) <> 0);
SysUtils.FindClose(SR);
Result := Borrar(sDirs);
end
else Result := Borrar(directorioRaiz +'\*.'+ extension +#0);
end;