Var iList, tmpPos: Integer; tmpList: TStringList; tmpSubDir, tmpStripped: String; tmpDate: TDateTime; Const ctDateFormat = 'yymmdd'; ctOlderThanDays = 500; Begin psExitCode:= 0; psVSA := ''; // ... add your code here psLogWriteStr('Checking Subdirs of Source: ' + psSourcePath); tmpList := TStringList.Create; Try Try psListPaths(psSourcePath, '*.*', 1, tmpList); // Iterate For iList := 0 To (tmpList.Count-1) Do Begin tmpSubDir := tmpList.Strings[iList]; psLogWriteStr('Source SubDir: ' + tmpSubDir); tmpStripped := psStringReplace(tmpSubDir, psSourcePath, ''); psLogWriteStr('Source SubDir Stripped 1: ' + tmpStripped); tmpPos := Pos('_', tmpStripped); If tmpPos > 0 Then Begin Delete(tmpStripped, 1, tmpPos); psLogWriteStr('Source SubDir Stripped 2: ' + tmpStripped); If length(tmpStripped) >= Length(ctDateFormat) Then begin tmpStripped := Copy(tmpStripped, 1, Length(ctDateFormat)); psLogWriteStr('Source SubDir Stripped 3: ' + tmpStripped); If StrToIntDef(tmpStripped, -1) > 0 Then Begin tmpDate := psStrToDate(tmpStripped, ctDateFormat, #0); psLogWriteStr('Source SubDir as Date: ' + FormatDateTime(ctDateFormat, tmpDate)); // Check Older Than If psIncDay(tmpDate, ctOlderThanDays) < Now Then Begin psLogWriteStr('Source SubDir older than valid for ' + tmpSubDir); psVSA := psVSA + tmpSubDir + '*;'; End; End Else psLogWriteStr('Source SubDir: ' + tmpSubDir + ', date part not a valid number'); End Else psLogWriteStr('Source SubDir: ' + tmpSubDir + ', date part not long enough'); End Else psLogWriteStr('Source SubDir: ' + tmpSubDir + ', date part not valid'); End; // Check psVSA If Trim(psVSA) <> '' Then Begin psLogWriteStr('psVSA will be used as Directory filter: ' + psVSA); psExitCode:= 1; End; Except psLogWriteStr('Checking Subdirs of Source "' + psSourcePath + '" Exception, Exit'); End; Finally tmpList.Free; End; End.