File Mover Blog

July 15, 2021

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

By Limagito Pascal Script , , Share: