Q: Need help with subtracting date from a filename. My filename is like: 20221023_Pg_01.pdf (YYYYMMDD ) and I need to subtract 1 day and rename it so that it’s 2022-10-22_section_P01.pdf where it’s YYYYMMDD.  My other dilemma is what will I do for a case like 20221001_Pg_01.pdf?
A: Yes this is possible using some Pascal Script. We’ve attached some screenshots to get you started.
- We are using a Windows Folder a Source

- Open the ‘Pascal Script’ option

- Enable and set the following ‘On Destinations’ Pascal Script:
Var
  tmpDate: TDateTime;
  tmpDateStr: String;
  tmpPos: Integer;
  tmpLen: Integer;
Const
  ctDateLen = 8;
Function GetDateFromString(const aInput: String): TDateTime;
var
  wYear, wMonth, wDay: Word;
Begin
  wYear := StrToInt(Copy(aInput, 1, 4));
  wMonth := StrToInt(Copy(aInput, 5, 2));
  wDay := StrToInt(Copy(aInput, 7, 2));
  Try
    Result := EncodeDate(wYear, wMonth, wDay);
  Except
    Result := 0;
  End;
End;
Begin
  psExitCode := 0;
  (*
  My filename is like: 20221023_Pg_01.pdf (YYYYMMDD ) and I need to subtract 1 day
  and rename it so that it’s 2022-10-22_section_P01.pdf where it’s YYYYMMDD.
  My other dilemma is what will I do for a case like 20221001_Pg_01.pdf?
  *)
  // ... add your code here
  tmpPos := pos('_', psFileName);
  tmpLen := Length(psFileName);
  // Check
  If (tmpLen > ctDateLen) And (tmpPos = 9) Then
  Begin
    Try
      tmpDateStr := Copy(psFileName, 1, ctDateLen);
      psLogWrite(1, '', 'Date stripped as String: ' + tmpDateStr);
      tmpDate := GetDateFromString(tmpDateStr);
      tmpDate := psIncDay(tmpDate, -1);
      psVSA := FormatDateTime('yyyy-mm-dd', tmpDate);
      psLogWrite(1, '', 'Date Update as String: ' + psVSA);
      // Set ExitCode
      psExitCode := 1;
    Except
      psLogWrite(1, '', 'Exception Error when searching for Date in filename: ' + psFilePath + psFileName);
    End;
  End
  Else
    psLogWrite(1, '', 'Not a valid filename: ' + psFilePath + psFileName);
End.

The above script will strip the datepart from the filename. We’ll substract one day from this datepart and put the result (in the requested format) in the psVSA var (%VSA).
- Please enable and adjust the File Renaming option in you Destination:

RegEx:  (.*)_(.)(.*)_(.*)\.(.*)
Replacement:  %VSA_section_\2\4.\5

#Filetransfer #Script
If you need any help with this ‘subtracting date from a filename’ option, please let us know.
Best Regards,
Limagito Team