File Mover Blog

July 12, 2021

Adjust datepart of a filename with Limagito File Mover

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.

Limagito File Mover Windows Folder as Source

2. Add the following ‘OnDestination’ Pascal Script. This script will strip and adjust the datepart in the filename.

Limagito File Mover Pascal Script Menu

Limagito File Mover On Destination Pascal Script

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’

Limagito File Mover File Renaming

Limagito File Mover File Renaming

4. RunTime Log Result:

Limagito File Mover 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

By Limagito Pascal Script , , Share: