date

  • 23 Oct

    Need help with subtracting date from a filename

    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

    Windows folder as Source

    • Open the ‘Pascal Script’ option

    Limagito File Mover Pascal Script

    • 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.

    Pascal Script

    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:

    Destination File Renaming

    • File Rename Setup:

    RegEx:  (.*)_(.)(.*)_(.*)\.(.*)

    Replacement:  %VSA_section_\2\4.\5

    Destination File Renaming option

    #Filetransfer #Script

    If you need any help with this ‘subtracting date from a filename’ option, please let us know.

    Best Regards,

    Limagito Team

    By Limagito-Team Pascal Script ,
  • 15 Jul

    Can you use the date in a file name to create the subdirectory?

    Q: Can you use the date in a file name to create the subdirectory? So, when moving the attached file, we would like to create a sub-directory of:

    C:\Users\niall\WindowsDatabase\Destination\Valuation\2021\06. Jun\ ,

    Where ‘2021\06. Jun\’ is derived from the name of the source file? Thinking if we can pull a date variable/parameter from the filename we could pass it into the directory set-up. I can’t see how to get there.

    A: Yes this is possible using some Pascal Script.

    We received the following filename from the customer: ‘Valuation_2021-06-21.csv’. We’ll use this in the following example but remember we can adjust the script for any other filename you might have.

    1.Using a Windows folder as Source:

    Limagito File Mover Windows Folder as Source

    2.Open our ‘Pascal Script’ option:

    Limagito File Mover Pascal Script Menu

    3. Add  and enable the following ‘On Destination’ Pascal Script:

     

    Var
      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, 6, 2));
      wDay := StrToInt(Copy(aInput, 9, 2));
      Try
        Result := EncodeDate(wYear, wMonth, wDay);
      Except
        Result := 0;
      End;
    End;
     
    Begin
      // Valuation_2021-06-21.csv
      psExitCode:= 0;
      // ... add your code here
      tmpList := TStringList.create;
      Try
        tmpList.delimiter := '_';
        tmpList.DelimitedText := psFileName;
        If tmpList.Count >= 2 Then
        Begin
          tmpDatePart := tmpList.Strings[1];
          psLogWrite(1, '', 'DatePart from File ' + psFilePath + psFileName + ': ' + tmpDatePart);
          tmpDate := GetDateFromString(tmpDatePart);
          // 2021\06. Jun\
          If Not (tmpDate = 0) Then
          Begin
            psVSA := FormatDateTime('YYYY', tmpDate);
            psVSA := psVSA + '\' + FormatDateTime('DD', tmpDate);
            psVSA := psVSA + '. ' + FormatDateTime('MMM', tmpDate) + '\';
            // Debug        
            psLogWrite(1, '', 'Result 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.

    Limagito File Mover Pascal Script

    4. Adjust the ‘Create Subdir option’ to %VSA in your Destination Setup. We used a Windows folder as Destination in our example.

    Limagito File Mover Destination Setup

    5. RunTime Log Result:

    Limagito File Mover RunTime Log

    #FileTransfer

    If you need any info about this ‘date in a file name to create the subdirectory’ feature, please let us know.

    Best regards,

    Limagito Team

  • 29 Dec

    Q&A 35: What are the Date & Time parameters that we can use?

    Q: What are the Date & Time parameters that we can use?

    A:

    https://limagito.com/w-or-ww-datetime-week-parameter-v10-6-27-0/

    https://limagito.com/weekoftheyear-w-or-ww-parameter/

     

    If you need any help with our ‘Date & Time parameters’, please let us know.

    Best Regards,

    Limagito Team

    By Limagito-Team Q&A , ,
1 2
SEARCH