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
If you need any
info about this new ‘Adjust datepart of a filename’ option, please let us know.
Best regards,
Limagito Team