Guten Morgen Sascha,
vielleicht liege ich ja falsch, aber aus dem, was ich von dir hier und an anderer Stelle gelesen habe, weiß ich, dass du in einem Ordner "Vertretungspläne" Unterordner anlegst, deren Namen aus einem Präfix "KW", der Kalenderwoche und der Jahreszahl gebildet werden.
Eine kleine Änderung der Bildungsregel für die Ordnernamen wäre hilfreich: Verbaue zuerst die Jahreszahl und dann die Kalenderwoche und achte auf führende Nullen:
Delphi-Quellcode:
function GetFolderName(dt: TDateTime): string;
begin
Result := Format('KW%.4d%.2d', [YearOf(dt), WeekOfTheYear(dt)]);
end;
So kannst du die Ordnernamen über einen String-Sort chronologisch sortieren. Hole dir die Unterordner einfach in eine StringList:
Delphi-Quellcode:
procedure GetSubFolders(folder: string; s: TStrings);
var
sr: TSearchRec;
begin
folder := IncludeTrailingPathDelimiter(folder);
if FindFirst(folder + '*.*', faDirectory, sr) = 0 then
try
repeat
if (sr.Name = '.') or (sr.Name = '..') then
Continue
else
if (sr.Attr and faDirectory) = faDirectory then
s.Add(sr.Name);
until FindNext(sr) <> 0;
finally
FindClose(sr);
end;
end;
// ...
const
BASE_FOLDER = 'C:\Daten\Vertretungspläne';
var
fn: TFileName;
folders: TStringList;
begin
folders := TStringList.Create;
GetSubFolders(BASE_FOLDER, folders);
folders.Sort;
// ...
end;
Jetzt kannst du einfach durch die Liste iterieren und alles, was zu alt ist, verschieben. Wozu brauchst du das Datum der Ordner aus dem Dateisystem, wenn es bereits im Ordnernamen enthalten ist? Wenn aber doch, dann bedenke, dass es dort ein CreationDate und ein LastWriteDate gibt.
Alles nur getippt und nicht getestet.
Freundliche Grüße