Q: Is it possible to move 1 file to 1 location and another file to a different location but only when a file with a specific extension is present? I’m processing a job where I create a data file with print information and a PDFfile, in the Main location there will be .csv file
Main Location
.csv
At some point a pdf file will appear in the main location i.e.
.csv
.pdf
Can I create a rule where
- It only starts when a .pdf is present
- Moves the .pdf file to 1 location and the .csv file to a different location?
A: Yes this is possible using a bit of Pascal Script. We added some screenshots from an example to get you started.
- We added a local Windows folder as Source:
- Important is to add the following FileName Include Filters. We’ll scan for ‘*.csv’ and ‘*.pdf’ files.
- Open the Pascal Script option:
- Enable and Add the following ‘On Rule Begin’ Pascal Script:
Begin
psExitCode:= 1;
// ... add your code here
psVSA := '';
End.
- Enable and Add the following ‘On Destination’ Pascal Script:
Var
tmpExt: String;
tmpFile: String;
Begin
psExitCode := 0;
// ... add your code here
tmpExt := ExtractFileExt(psFileName);
// Check for pdf if csv exists
If tmpExt = '.csv' Then
Begin
tmpFile := psStringReplace(psFileName, tmpExt, '.pdf');
If FileExists(psFilePath + tmpFile) or (Pos(psFilePath + tmpFile, psVSA) <> 0) Then
Begin
psLogWrite(1, '', 'File ' + tmpFile + ' Exists');
psVSA := psVSA + ';' + psFilePath + psFileName;
psExitCode := 1;
End;
End;
// Check for csv if pdf exists
If tmpExt = '.pdf' Then
Begin
tmpFile := psStringReplace(psFileName, tmpExt, '.csv');
If FileExists(psFilePath + tmpFile) or (Pos(psFilePath + tmpFile, psVSA) <> 0) Then
Begin
psLogWrite(1, '', 'File ' + tmpFile + ' Exists');
psVSA := psVSA + ';' + psFilePath + psFileName;
psExitCode := 1;
End;
End;
End.
- Enable and Add the following ‘On Destinations‘ Pascal Script:
Begin
psExitCode := -1;
// .csv files to Destination ID1
If (psDestinationID = 'ID1') And (ExtractFileExt(psFileName) = '.csv') Then
psExitCode := 1;
// .pdf files to Destination ID2
If (psDestinationID = 'ID2') And (ExtractFileExt(psFileName) = '.pdf') Then
psExitCode := 1;
End.
- Add two Destinations. Important, the first Destination (ID1) should receive hte csv files and the second Destination (ID2) should receive the pdf files.
- RunTime Log Result. The Csv file goes to the first Destination and only when a pdf file with the same name exists. The pdf file itself goes to the second Destination.
#Filetransfer #Filemanagement
If you need any info about this request, please let us know.
Best regards,
Limagito Team