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:
- File Rename Setup:
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