File Mover Blog

April 24, 2023

File renaming logic using day of week function

Q: We need the dates tv listing dates moved to publications dates. This newspaper publishes 3 days a week, Wednesday, Friday and Saturday. In order to automatically flow the graphic onto the page, the file name needs to match the publication date.

We need the following logic,

  • Wednesday graphic gets Wednesday date,
  • Thursday graphic gets Wednesday date (the day before)
  • Friday graphic gets Friday date
  • Saturday graphic gets Friday date (the day before)
  • Sunday / Monday / Tuesday graphics get the previous Saturday date.

For example:

Sunday / Monday / Tuesday dates:

  • PH_20230423.pdf
  • PH_20230424.pdf
  • PH_20230425.pdf

We’d want renamed to

  • PH_Sun_20230422.pdf
  • PH__Mon_20230422.pdf
  • PH_Tues_20230422.pdf

Technically the “Sun”, “Mon”, “Tues” could be anything as long as they’re unique and predictable.

Moving onto the next set:

  • PH_20230426.pdf
  • PH_20230427.pdf

Would be renamed to

  • PH_Wed_20230426.pdf
  • PH_Thurs_20230426.pdf

And finally:

  • PH_20230428.pdf
  • PH_20230429.pdf

Would be renamed to

  • PH_Fri_20230428.pdf
  • PH_Sat_20230428.pdf

 

A: Yes this is possible using our Mover Pascal Script and Destination RegEx renaming options.

  • Open ‘Pascal Script’ setup

Limagito File Mover Pascal Script

  • Enable and add the following ‘On Destination’ Pascal Script:
Var
  tmpLen: Integer;
  tmpDateStr, tmpFilePart: String;
  tmpDate1, tmpDate2: TDateTime;
Begin
  psExitCode:= 1;
  // ... add your code here
  // PH_20230423.pdf > PH_Sun_20230422.pdf
  tmpDateStr := psFileName;
  tmpDateStr := psStringReplace(tmpDateStr, '.pdf', '');
  tmpLen := Length(tmpDateStr);
  If tmpLen >= 8 Then
  Begin
    tmpDateStr := Copy(tmpDateStr, tmpLen - 8 + 1, 8);
    tmpDate1 := psStrToDate(tmpDateStr, 'YYYYMMDD', #0);
    Case DayOfWeek(tmpDate1) of
    1: // Sunday
      tmpDate2 := psIncDay(tmpDate1, -1);
    2: // Monday
      tmpDate2 := psIncDay(tmpDate1, -2);
    3: // Tuesday
      tmpDate2 := psIncDay(tmpDate1, -3);
    4: // Wednesday
      tmpDate2 := tmpDate1;
    5: // Thursday
      tmpDate2 := psIncDay(tmpDate1, -1);
    6: // Friday
      tmpDate2 := tmpDate1;
    7: // Saturday
      tmpDate2 := psIncDay(tmpDate1, -1);
    Else
      psExitCode := 0; // Error
    End;
    psVSA := FormatDateTime('DDD', tmpDate1);
    psVSB := FormatDateTime('YYYYMMDD', tmpDate2);
    psLogWrite(1, '', 'Date: ' + psVSB + ', Day: ' + psVSA);
  End
  Else
    psLogWrite(1, '', 'Length error of ' + tmpDateStr);
End.

Limagito File Mover Pascal Script Day of Week

  • Afterwards, adjust the File Rename option in your Destination setup:
RegEx:  (.*)_(.*)\.(.*)
Replacement:  \1_%VSA_%VSB.\3
Limagito File Mover File Rename using RegEx
– RunTime Log Result:
Limagito File Mover RunTime Log

#FileTransfer

If you need any info about this  ‘day of week function’, please let us know.

Best regards,

Limagito Team

By Limagito-Team Pascal Script Rename , Share:
SEARCH