Pascal Script

  • 30 Jun

    How to move files to different destinations based on the file extension

    How to move files to different destinations based on the file extension

    Q: Since we are dealing with Pharma equipment where we are pulling data off. We would like to be able to split the data into ‘readable’ (ie Txt, excel) and permanent (ie PDF, Image) and place the file types in different subdirectories on the target. At this time, my only solution would be to create two separate rules to accomplish this. Given that there are so many features hidden in your tool that I keep learning about, I was wondering if that was a feature that is in the Mover that I have not found.

    A: Yes this is possible using our Script option.

    • We used a Windows Folder as Source:

    limagito file mover windows folder as source

    • We added the following Filename Include Filters. These are the file extensions we want to split to different destinations.

    limagito file mover filename filter

    • In this example we added 4 destinations. Each Destination has a unique ID:
      • ID1
      • ID2
      • ID3
      • ID4

    We’ll use this Destination ID in our script.

    limagito file mover destination setup

    • Next, please open our Pascal Script option:

    limagito file mover pascal script option

    • Enable and add the following ‘On Destinations’ Pascal Script:
    Var
      tmpFileExt: String;
    Begin
      psExitCode:= -1;
      // ... add your code here
      tmpFileExt := ExtractFileExt(psFilename);
      // psLogWrite(1, '', 'Check File Extension ' + tmpFileExt + ' from ' + psFilename);
      // Check If Destination ID is ID1 AND do we have a .txt file?
      If (psDestinationID = 'ID1') Then 
        If SameText(tmpFileExt, '.txt') Then
          psExitCode := 1; 
      // Check If Destination ID is ID2 AND do we have .xls/.xlsx files?
      If (psDestinationID = 'ID2') Then
        If SameText(tmpFileExt, '.xls') OR SameText(tmpFileExt, '.xlsx') Then
          psExitCode := 1; 
      // Check If Destination ID is ID3 AND do we have a .pdf file?
      If (psDestinationID = 'ID3') Then 
        If SameText(tmpFileExt, '.pdf') Then
          psExitCode := 1;  
      // Check If Destination ID is ID4 AND do we have .png/.jpg/.bmp files?
      If (psDestinationID = 'ID4') Then
        If SameText(tmpFileExt, '.png') OR SameText(tmpFileExt, '.jpg') OR SameText(tmpFileExt, '.bmp') Then
          psExitCode := 1;       
    End.

    limagito file mover different destinations based on the file extension

    • RunTime Log Result:

    limagito file mover runtime log

    This is is just an example of what is possible. If you need any help with this ‘different destinations based on the file extension’, please let us know.

    Best Regards,

    Limagito Team

    #managedfiletransfer #filetransfer #filemanagement

  • 20 Apr

    How to export all rules to CSV with column name, source and destination

    Is there a way to export all Limagito rules to CSV or Excel with the column of name, source and destination?

    In a recent version of Limagito File Mover we added the following Pascal Script function to achieve this:

    Function psExportRuleDataAsCSV(Const aFile, aData, aDelimiter: String): String;

    aFile = Output Csv file, e.g. ‘C:\Temp\RuleList.csv’
    aData = a ; seperated list of items you want to add ( When empty string we’ll use ‘1;2;3;4’ )
    1 = RuleID
    2 = DisplayName
    3 = Source
    4 = Destination
    5 = Rule Status (version v2024.9.7.0 and up)

    • 0 = Unknown
    • 1 = Scanning Disabled
    • 2 = Rule in Hold
    • 11 = Delete Function: Enabled
    • 12 = Delete Function: Disabled
    • 13 = Delete Function: Thread(s) Terminating
    • 14 = Delete Function: Thread(s) Running
    • 15 = Delete Function: Error as Info Status
    • 21 = Move Function: Enabled
    • 22= Move Function: Disabled
    • 23 = Move Function: Thread(s) Terminating
    • 24 = Move Function: Thread(s) Running
    • 25 = Move Function: Error as Info Status
    • 31 = Copy Function: Enabled
    • 32 = Copy Function: Disabled
    • 33 = Copy Function: Thread(s) Terminating
    • 34 = Copy Function: Thread(s) Running
    • 35 = Copy Function: Error as Info Status

    6 = GroupName (version v2024.10.15.0 and up)
    7 = Information
    8 = RuleSchedule (version v2024.10.15.0 and up)
    9 = GlobalSchedule (version v2024.10.15.0 and up)
    20 = RuleLogFile (version v2024.10.15.0 and up)
    21 = RuleLogFileName (version v2024.10.15.0 and up)
    22 = RuleLogFilePath (version v2024.10.15.0 and up)
    23 = GlobalLogFile (version v2024.10.15.0 and up)
    24 = GlobalLogFileName (version v2024.10.15.0 and up)
    25 = GlobalLogFilePath (version v2024.10.15.0 and up)

     

    aDelimiter = csv delimiter used in the csv outputfile

     

    • Setup is easy, you’ll only need to add our ‘Pascal Script’ option as Source

    limagito file mover pascal script as source

    • Do not forget to adjust the ‘ctOutputCsv’ const:
      • Please add the following script: link

    limagito file mover export all rules to CSV

    • This is all you need to do, just enable and trigger the Rule now
    • Output Csv file content:

    RuleID,DisplayName,Source,Destination
    1,UNZIP Files Mike,[WIN]C:\Test\Out_Zip\,ID1[ZIP]C:\Test\Out_Zip\Out\
    2,WIN > Google Cloud Storage,[WIN]C:\Test\In\,ID2[GCLOUD]storage.googleapis.com/limagito/test
    3,GCloud > WIN,[GCLOUD]storage.googleapis.com/limagito/Test,ID1[WIN]C:\Test\Out\GCloud\

    If you need any help with our new ‘export all rules to CSV’ feature, please let us know. If you need more fields, please let us know.

    Best Regards,

    Limagito Team

    #managedfiletransfer #FileManagement #filetransfer

  • 30 Mar

    How to use 7z compression in Pascal Script

    How to use 7z compression in Pascal Script

    In version v2024.3.20.0 we added two new Pascal Script functions which allows you to use 7z compression.

    • Function ps7zCompress(Source: String; Destination: String; Password: String; Options: TStringList): Boolean;
    • Function ps7zCompressEx(Source: String; SourceFiles: TStringList; Destination: String; Password: String; Options: TStringList): Boolean;

    We added an example where we’ll be looking for a certain file called ‘trigger.txt’ within subfolders. If this trigger file is found we’ll compress the complete subfolder. The goal is to create a compressed backup of the complete subfolder content.

    • As Source we used a Windows Folder:

    limagito file mover windows folder as source

    • The content of subfolder ‘Sub’ looks like the following screenshot. It contains the ‘trigger.txt’ file which we’ll use to start the compressing mechanism.

    limagito file mover windows folder as source

    • We added the following include filename filter, because we are searching for the ‘trigger.txt’ only. This file will determine which subfolder we need to compress.

    limagito filemover filename include filter

    • Enable ‘Include Subdirectories’ within the Dir Filter’ setup:

    limagito filemover directory filter

    • We enable our ‘File Memory’ option because we only want to compress its subfolder once. If the trigger.txt is changed, then we’ll compress the subfolder again.

    limagito file mover file memory option

    – Function is set to ‘Copy’ because we want to keep the source files.

    limagito file mover function setup

    • Now add our ‘Pascal Script’ as Destination:
      • Please add the following script: link
      • Please adjust the following Const if needed:
        • ctZipPassword
        • ctZipExt
        • ctOutputPath

    7z compression in Pascal Script

    • The new ps7zCompress function has quite some options available which you can adjust if needed:
      • AddDirectory = False, True (default: True)
      • CompressionMethod = Copy, Deflate, Deflate64, BZip2, LZMA, LZMA2, PPMd (default: Deflate)
      • DuplicateCheck = None, Existing, All (default: Existing)
      • DuplicateAction = Overwrite, Error, Skip (default: Overwrite)
      • EncryptionMethod = None, AES128, AES192, AES256, ZipCrypto (default: ZipCrypto)
      • FileIncludeFilter = (default: *.*)
      • ScanSubDirectories = False, True (default: True)
      • Level = 0..9 (default: 7)
      • Threads = 1 .. 255 (default: 1)
      • Error = ‘Error Description if compression fails’

    7z compression in Pascal Script

    • RunTime Log Result:

    limagito filemover runtime log

    • Output Result:

    7z compression in Pascal Script

    If you need any help with our new ‘7z compression in Pascal Script’ feature, please let us know.

    Best Regards,

    Limagito Team

    #7z #pascalscript #managedfiletransfer #FileManagement #filetransfer

    By Limagito-Team Pascal Script ZIP ,
1 2 3 4 5 6 7 30
SEARCH