如何從列印指令腳本觸發檔案中提取資訊,並將其用於設定列印文件動作
問題
如何從包含列印指令腳本的觸發檔案中剝離資訊,然後用這些資訊在「列印文件」動作中設定變數資料和列印選項?
解答
以下方法可用來從包含指令腳本參數的觸發檔案中擷取命名資料來源,然後像一般 csv 檔案一樣使用這些資料。這兩種方法都需要建立一個包含「列印文件」指令的檔案整合。
使用正則表達式
這兩種方法中較簡短的是使用正則表達式(regex)。整個流程到「列印文件」動作如下:
前三個動作是「搜尋並刪除」動作。以下是範例中使用的資料:
%BTW% /AF="C:\Users\framos\Desktop\TempFiles\PALLET-0.btw" /PRN="PFM_ADV_COP" /R=3 /P /D="%Trigger File Name%" /DD
%END%
AF1;AF2;AF3;AF4;AF5;A5;AF6;AF7;AF8;AF9;AF10;AF11;AF12;AF13;AF14;AF15;AF16;A16;AF17;AF18;AF19;AF20;A20;AF21;AF22;AF23;AF24;AF25;AF26;AF27;AF28;AF29;AF30;AF31;AF32;AF33;AF34;AF35;AF36;AF37;AF38;AF39;AF40;AF41;AF42;AF43;AF44;AF45;XF1;XF2;P1;END
;BLE-0230ABU;40000,00;;100000025;S;VERSEUR 29MM;BH0290ABU190I01;BLEDINA;69400;VILLEFRANCHE SUR SAONE;;111,38;BH0290ABU190I01;40000,00;PCE;170215;P;;1;100,00;OF000006;K;OF000006;;R;;PCE;Commission client;;40000,00;PCE;40000,00;PCE;UNITED CAPS MESSIA;39570 MESSIA SUR SORNE FRANCE;P01;;;;;CUS002474;;0;036610641000000258;0;63661064000055;02;4;2,00;TOTO est parti chez le boulanger pour acheter un croissant;END
1. 從觸發檔案擷取的事件資料中取得文件名稱
這個正則表達式會刪除 /AF=" 之前(含本身)以及 " /PRN 之後(含本身)的所有內容。以下是可直接複製使用的正則表達式:
(%BTW[\s\S]*\/AF=")|(" \/PRN[\s\S]*)
2. 從事件資料中取得印表機名稱
和前一個動作類似,這個動作會剝除並刪除 /PRN 參數引號之間以外的所有內容。以下是可直接複製使用的正則表達式:
(%BTW[\s\S]*\/PRN=")|(" \/R[\s\S]*)
3. 刪除指令腳本,讓「列印文件」動作可以像一般 csv 檔案一樣使用觸發檔案資料:
這個正則表達式會直接刪除前兩行,保留剩下的資料。以下是可直接複製使用的正則表達式:
(.BTW[\s\S]*END.)\u000D\u000A
建立自己正則表達式時的注意事項
BarTender 在整合中使用 % 來表示變數。指令腳本中有兩個這樣的標記,%BTW% 和 %END%。如果你的正則表達式中包含兩個 %,BarTender 會將它們之間的內容視為變數,並可能出現警告:「無法套用轉換,因為搜尋條件包含一個或多個未解析的名稱。」
如果可以,請盡量避免同時使用兩個 %。如果必須同時使用,例如上面用來刪除指令腳本的正則表達式,你可以用萬用字元 . 取代 %,或是在動作中取消勾選「變數」選項:
使用剝離後的資訊列印文件
最後一步是將這些資訊帶入你的「列印文件」動作。利用你建立的變數,只要將它們填入「列印文件」動作中的「文件」和「印表機」欄位即可:
你也可以在這裡使用從指令腳本剝離的其他資訊,例如份數或你自訂的變數。你可以像這樣加入命名資料來源,其中 %NamedVariable1% 就是你從指令腳本擷取的資料:
更多資訊
如果你在使用正則表達式時遇到困難,或是不想使用正則表達式,這裡有另一種可以用來擷取資訊的方法。
使用搜尋並刪除
這種方法比前一種稍微繁瑣。如果你不想用正則表達式或不想修改它們,這是一個不錯的選擇。每一個你想從指令腳本中剝離的部分,都需要進行以下一系列的搜尋動作:
1. 第一步搜尋 /AF=",然後刪除它之前的所有內容:
2. 第二步刪除第一步搜尋到的 /AF=":
3. 現在我們需要刪除實際檔名之後的所有內容。由於我們不知道檔名會是什麼,可以直接刪除引號之後的所有內容,因為這會是搜尋到的第一個引號:
4. 和之前一樣,我們還需要刪除這個引號。
現在你已經取得 BTW 檔案的路徑和名稱。每一個你想從指令腳本中剝離的部分,例如印表機或其他資訊,都需要重複這四個步驟。