Dear users,
Second Pascal Script is based on the following user request:
We need some help on setting up a rule. The rule we are trying to setup is as follow. Source folder has files in it, example file names ABC-test.txt, 123_test.txt, and test_XYZ.txt. We have a destination folder called “Test”, and we have 3 folders under it called ABC, 123, and XYZ. We want the rule to separate the files and place them in their specified folders. For example, file ABC-test.txt will be placed into folder ABC, 123_test.txt file will be placed into folder 123, and text_XYZ.txt file will be place into folder XYZ. We want the files to be moved into the separated folders that matches their name.
> Add your Destination:
> Destination Setup, change the ‘Create Subdir, opt.’ to %VSB
> Add the following ‘On Rule Begin’ Pascal Script. Very important: the ctOutputPath contant must be the same as your destination path (first screenshot) !
Var
iList: Integer;
tmpSub: String;
tmpList: TStringList;
Const
ctOutputPath = 'C:\Test\Out\';
Begin
psExitCode:= 1;
// ... add your code here
psVSA := '';
tmpList := TStringList.Create;
Try
psListPaths(ctOutputPath, '*.*', 0, tmpList);
for iList := 0 to (tmpList.Count-1) do
Begin
tmpSub := tmpList.Strings[iList];
tmpSub := psStringReplace(tmpSub, ctOutputPath, '');
tmpList.Strings[iList] := tmpSub;
End;
psVSA := tmpList.CommaText;
// Debug
psLogWrite(1, '', 'SubFolder found: ' + psVSA);
Finally
tmpList.Free;
End;
End.

Var
iList: Integer;
tmpSub: String;
tmpList: TStringList;
Const
ctOutputSubPathNone = 'None\';
Begin
psExitCode:= 1;
// ... add your code here
psVSB := ctOutputSubPathNone;
// Iterate
tmpList := TStringList.Create;
Try
tmpList.CommaText := psVSA;
tmpList.Sort;
for iList := (tmpList.Count-1) downto 0 Do
Begin
tmpSub := tmpList.Strings[iList];
tmpSub := psStringReplace(tmpSub, '\', '');
psLogWrite(1, '', 'Sub: ' + tmpSub);
If Pos(LowerCase(tmpSub), LowerCase(psFileName)) <> 0 Then
Begin
psVSB := tmpSub;
Break;
End;
End;
// Debug
psLogWrite(1, 'Destination SubFolder will be: ', psVSB);
Finally
tmpList.Free;
End;
End.
If you have any question about this example, don’t hesitate to ask.
Regards,
Limagito Team