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:
2.Open our ‘Pascal Script’ option:
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.
4. Adjust the ‘Create Subdir option’ to %VSA in your Destination Setup. We used a Windows folder as Destination in our example.
5. RunTime Log Result:
#FileTransfer
Best regards,
Limagito Team