Q: Adjust datepart of a filename with Limagito File Mover. I have a file name “thisfile_20210712” and after transfer I would like to reduce one day “thisfile_20210711”. I can try to figure out with regex but what if the day is 20210801” that would be challenge for regex . I don’t know if you have any thing to allow external window host script to run after the job to fix this.
A: Yes this is possible using some Pascal Script. If you think this is too difficult for you, just contact us and we’ll help.
We received an example file of the customer:
This is the example “thisfile_20210711_new.pdf”
Expected: “thisfile_20210710_revised.pdf”
1.Our Source is a Windows Folder.
2. Add the following ‘OnDestination’ Pascal Script. This script will strip and adjust the datepart in the filename.
Var iList: Integer; tmpDate: TDateTime; tmpDatePart: String; tmpList: TStringList; 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 // thisfile_20210711_new.pdf psExitCode:= 0; // ... add your code here tmpList := TStringList.create; Try tmpList.delimiter := '_'; tmpList.DelimitedText := psFileName; If tmpList.Count >= 3 Then Begin tmpDatePart := tmpList.Strings[1]; psLogWrite(1, '', 'DatePart from File ' + psFilePath + psFileName + ': ' + tmpDatePart); tmpDate := GetDateFromString(tmpDatePart); tmpDate := psIncDay(tmpDate, -1); // If Not (tmpDate = 0) Then Begin tmpList.Strings[1] := FormatDateTime('YYYYMMDD', tmpDate); // Iterate For iList := 0 to (tmpList.Count-1) Do Begin If iList = 0 Then psVSA := tmpList.Strings[iList] Else psVSA := psVSA + '_' + tmpList.Strings[iList]; End; psLogWrite(1, '', 'Reesult psVSA: ' + psVSA); psExitCode := 1; End Else psLogWrite(1, '', 'GetDateFromString Error, ' + tmpDatePart); End Else psLogWrite(1, '', 'Count FileName _ Parts Error, ' + psFileName); Finally tmpList.free; End; End.
3. In your Destination setup we’ll use the File Renaming option to rename the originale filename to:
- the adjusted filename (%VSA)
- ‘new.pdf’ part to ‘revised.pdf’
4. RunTime Log Result:
#FileTransfer
Best regards,
Limagito Team