Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Eliminar archivos segun su extension (https://www.clubdelphi.com/foros/showthread.php?t=58259)

ZayDun 14-07-2008 14:59:04

Eliminar archivos segun su extension
 
Hola, buscando por el club encontre un codigo que hace practicamente casi lo que quiero, ya que este codigo elimina todos los archivos de una extension que indiquemos en la ruta que tambien decidamos. el problema es que si por ejemplo pongo C:\ me elimina solamente los que estan en C:\ y no las extensiones que se encuentren en algun directorio por ejemplo C:\temp


Código Delphi [-]
procedure TForm1.Button2Click(Sender:TObject);
 
Var
 
MiDir:String; // Donde están los ficheros
MisFicheros:String; //Cadena que contiene el nombre con comodines
RBusqueda:TSearchRec; //Está definida en la unidad SysUtils
 
Begin
MiDir:='C:\';
MisFicheros:='*.tmp';
 
If FindFirst(MiDir+MisFicheros,faanyfile, RBusqueda)=0 Then
Begin
DeleteFile(PChar(MiDir+RBusqueda.Name)); //Borro el primero si existe
 
//Busco todos los del mismo patrón y los borro
While FindNext(RBusqueda)=0 Do
Begin
DeleteFile(PChar(MiDir+RBusqueda.Name));
End;
 
//Ambas funciones devuelven 0 si la búsqueda tiene éxito
End;
End;

Alguno sabe que puedo añadir o modificar para que busque en los directorios? gracias.

Khronos 14-07-2008 15:01:24

Código Delphi [-]
procedure Buscar(const directory, mask: string; atributos: integer);
var
    regBusqueda: TSearchRec;
  begin
    if FindFirst(directory + mask, atributos,regBusqueda) = 0 then
    begin
      try
          while FindNext(regBusqueda)= 0 do begin
             if (regBusqueda.Attr and faDirectory = 0)
            or (regBusqueda.Name <> '.')
              and (regBusqueda.Name <> '..') then
                     //Aqui hacemos lo que queramos..
                     DeleteFile(pchar(Directory + regBusqueda.name));
          end;
      except
        FindClose(regBusqueda);
      end;
      FindClose(regBusqueda);
    end;
    if FindFirst(directory + '*', atributos
      or faDirectory, regBusqueda) = 0 then
    begin
      try
        while FindNext(regBusqueda) = 0 do begin
          if ((regBusqueda.Attr and faDirectory) <> 0)
            and (regBusqueda.Name <> '.')
              and (regBusqueda.Name <> '..') then
                Buscar(directory + regBusqueda.Name + '\', Mask, atributos);
        end;
      except
        FindClose(regBusqueda);
      end;
      FindClose(regBusqueda);
    end;
  end;

Ten cuidado con esta funcion, no vayas a llevar un disgusto :D

Salu2

ZayDun 14-07-2008 15:38:23

jaja muchas gracias Khronos, intentare no añadir la extension *.exe :P saludos!


La franja horaria es GMT +2. Ahora son las 02:05:02.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi