Petit programme bateau mais efficace permettant d'effacer des fichiers dans des repertoires ciblés (au choix) dans vos disque dur et utilisant comme critère de selection la taille et la date. Je vient de le faire là à mon entreprise et si je le poste c'est pour que d'autres puissent s'en servire mais aussi pour qu'on me dise ce que je pourrai améliorer ou ajouter pour le rendre plus efficace ou complet !
Merci.
Source / Exemple :
La fonction recursive pour ceux qui ont le fleme de D/L le zip :)
procedure TMainPage.ScanFichiers( NomDossier : string ; subFolder : boolean );
var
DateOk : Boolean;
TailleOk : Boolean;
hFind : TSearchRec;
begin
NomDossier := slach(NomDossier);
if FindFirst( NomDossier + '*.*', FaAnyFile, hFind ) = 0 then
begin
repeat
if (hFind.Name <> '.') and (hFind.Name <> '..') then
begin
if ( hFind.Attr and faDirectory ) <> faDirectory then { c'est un fichier = traitment }
begin
{ Compare Date fichier }
case RadioDate.ItemIndex of
0: begin
if DaysBetween( Now, FileDateToDateTime(hFind.Time) ) > StrToInt(TxtHighDate.Text) then DateOk := True Else DateOk := False;
end;
1: begin
if DaysBetween( Now, FileDateToDateTime(hFind.Time) ) < StrToInt(TxtLowDate.Text) then DateOk := True Else DateOk := False;
end;
2: DateOK := True;
end;
{ Compare Taille fichier }
case RadioTaille.ItemIndex of
0: begin
if Int( hFind.Size div 1000 ) > StrToInt(TxtHighSize.Text) then TailleOK := True Else TailleOK := False;
end;
1: begin
if Int( hFind.Size div 1000 ) < StrToInt(TxtLowSize.Text) then TailleOK := True Else TailleOK := False;
end;
2: TailleOk := True;
end;
{ Si condition reunis, efface le fichier }
if DateOK and TailleOK then
begin
Grid.Cells[0, Grid.RowCount-1] := ( NomDossier + hFind.Name );
Grid.Cells[1, Grid.RowCount-1] := IntToStr( (hFind.Size div 1000) );
Grid.Cells[2, Grid.RowCount-1] := DateToStr( FileDateToDateTime( hFind.Time ) );
if CheckSimu.Checked = True then
Grid.Cells[3, Grid.RowCount-1] := 'Simulation'
else begin
if DeleteFile( NomDossier + hFind.Name ) then
Grid.Cells[3, Grid.RowCount-1] := 'Effacer'
else
Grid.Cells[3, Grid.RowCount-1] := 'Erreur';
end;
Grid.RowCount := Grid.RowCount + 1;
end;
end else begin { c'est un dossier : on va voir dedans si subFolder = True }
if subFolder = True then ScanFichiers( (slach(NomDossier) + hFind.Name), subFolder );
end;
end;
until FindNext(hFind) <> 0;
FindClose(hFind);
Application.ProcessMessages
end;
end;
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.