Loop sui file di scriptCari scripter jsl,
Ho uno script in cui utilizzo l'istruzione include per chiamare un pedice per "reporting" (inserimento di un grafico JMP in un file powerpoint):
dt = Current Data Table();
Include( strRootPathScript || str_report_Product1) );
Funziona bene finché uso 1 prodotto. Il mio desiderio è di scorrere un elenco di prodotti [Prodotto1;Prodotto2;...]
e per sostituire il nome del prodotto nell'istruzione di inclusione.
Dopo alcune prove esotiche sulle istruzioni EVAL/EXPR/SUBSTITUTE, chiedo il tuo aiuto!
Grazie!!!
Girolamo
ScriptingRi: Loop sui file di scriptCiao @J_Bonnouvrier1 ,
In tal caso, tutto ciò che devi fare è assicurarti che il percorso della tua directory sia definito correttamente (con l'ultima barra rovesciata inclusa) e che devi concatenare il finale ".jsl" per assicurarti che le cose funzionino come previsto.
Ad esempio, ho creato tre file Product JSL, ciascuno con i seguenti comandi, ma cambiando solo i numeri da 1, a 2 e poi 3:
Names Default to Here (1);
Print("This is Product 1 JSL script");Il file JSL principale è il seguente:
Names Default to Here (1);
Product_List={"Product1", "Product2", "Product3"};
ScriptDir = "C:\temp\"; //Or whatever your path is.
Print("This is the main script");
For(i=1, i<=NItems(Product_List), i++,
Include(ScriptDir||Product_List[i]||".jsl");
);L'output dell'esecuzione del codice principale di cui sopra è:
"Questa è la sceneggiatura principale"
"Questo è lo script JSL del prodotto 1"
"Questo è lo script JSL del prodotto 2"
"Questo è lo script JSL del prodotto 3"
Funzionerà anche se hai ".jsl" come parte dell'elenco dei prodotti, come: Product_List={"Product1.jsl", "Product2.jsl",...}; e quindi rimuovere la concatenazione ||".jsl" dal ciclo For. Ad ogni modo, ottieni lo stesso output di cui sopra. Dipende solo da come vuoi definire l'elenco Product_List.
Spero che sia di aiuto!,
DS
Ri: Loop sui file di scriptCiao @SDF1 ,
In realtà ho dimenticato di menzionare che str_report_Product1 è una variabile che dà il nome del file per ogni prodotto:
str_report_Product1 = "C:\temp\report_Product1.jsl"
Quindi, la soluzione che proponi non è riconosciuta dallo script.
Grazie e saluti,
Girolamo
Ri: Loop sui file di scriptCiao @J_Bonnouvrier1 ,
È un po 'difficile generalizzare questo in modo che funzioni in qualsiasi circostanza, ma potresti scorrerlo in rassegna data una struttura di codice/file come la immagino.
Supponendo che tu conosca in anticipo le sostituzioni Prodotto1, Prodotto2, ecc. Nel tuo codice JSL, se fai qualcosa del tipo:
dt = Current Data Table();
For(i=1, i<=NItems(Product_List), i++,
Include(strRootPathScript||"str_report_"||Product_List[i]);
);
In questo caso, la variabile Product_List sarebbe un elenco dei tuoi prodotti: Product_List={"Product1", "Product2", "Product3",...};. Nel ciclo For, quando chiama Product_List[i], concatena l'i-esimo elemento di Product_List. Quindi, se i = 3, dovrebbe fare quanto segue:
Include(strRootPathScript||str_report_||Product_List[3]) , dove presumo che strRootPathScript sia un percorso root, come "C:\myfiles\JSL_code\", in modo che l'argomento che stai inserendo nella funzione Include sia in questo caso sarà: "C:\myfiles\JSL_code\str_report_Product3".
È questo il genere di quello che stai cercando?
Spero che sia di aiuto!,
DS