Rufen Sie den Namen des aktuellen Skripts ab<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ich versuche, eine Möglichkeit zu finden, den Namen eines Skripts zu dem vom Skript erstellten Bericht hinzuzufügen. Das bedeutet, dass ich irgendwann eine Textzeichenfolge mit dem Skriptnamen erhalten muss. Ich kann das Verzeichnis der Skriptdatei sehen:
sDir=Standardverzeichnis abrufen();
und die Dateien in diesem Verzeichnis:
lFiles=Dateien im Verzeichnis(sDir);
Aber ich habe keine Möglichkeit gefunden, nur den Dateinamen abzurufen, der von dem Skript stammt, das ich gerade ausführe. Das Problem besteht darin, dass ich, wenn ich später einen gespeicherten Bericht finde, genau wissen möchte, welches Skript ausgeführt wurde, um diesen Bericht zu erstellen.
Bitte helfen Sie.
Betreff: Namen des aktuellen Skripts abrufenDanke @BioData41
Solange ich dies im Skript verwende, um auf seinen eigenen Dateipfad zu verweisen, funktioniert es, wenn die Datei alleine ausgeführt wird oder wenn das Skript von einem anderen Skript aus mit Include() ausgeführt wird.
scriptFilePath = Include File List()[1];
Betreff: Namen des aktuellen Skripts abrufenIch bin mir nicht sicher, wie lange es diese Funktion schon gibt, da ich relativ neu bei JMP bin und diese Funktion gerade selbst gefunden habe, als ich versuchte, ein ähnliches Problem zu lösen, aber es scheint, dass die Funktion „Include File List()“ eine Liste von zurückgibt Öffnen Sie Dateien, die im Kontext des ausführenden Skripts stehen. (Übrigens ist die Beschreibung dieser Funktion nur einigermaßen informativ, wie es bei den meisten Funktionen/Methoden/Nachrichten im Scripting Index oder in Online-Ressourcen der Fall ist.)
Wenn diese Funktion am Anfang des Skripts ausgeführt wird, bevor etwas anderes vom Skript geöffnet wird, scheint es, dass der Skriptdateipfad und der Skriptdateiname daraus extrahiert werden können, da dies der einzige Pfad ist, der an dieser Stelle zurückgegeben wird.
Als ich es mit anderen in JMP geöffneten Dateien getestet und das Skript durch Doppelklick im Windows Explorer ausgeführt habe (wobei das Skript so eingestellt war, dass es beim Öffnen ausgeführt wird, ohne ein Skripteditorfenster zu öffnen, indem ich oben im Skript „//!“ eingefügt habe). ), bekomme ich nur den Pfad dieses Skripts zurückgegeben. Keine der anderen geöffneten Dateien wird zurückgegeben.
Betreff: Namen des aktuellen Skripts abrufenGenau das habe ich getan. Danke
Betreff: Namen des aktuellen Skripts abrufenIch habe mir fast genau das gleiche Skript (die „For“-Schleife) ausgedacht, bevor ich meine Frage gepostet habe. Das Problem dabei ist, dass ich nicht weiß, ob das zurückgegebene Skript das aktuelle ist. Wenn beispielsweise dasselbe Skript in verschiedenen Versionen im selben Ordner gespeichert ist, würde ich eine Liste von .jsl-Dateien erhalten. Ich muss den Namen des aktuellen Skripts abrufen, unabhängig davon, wie viele Skripts mit ähnlichen Namen am selben Ort gespeichert sind.
Betreff: Namen des aktuellen Skripts abrufenWenn das Skript über ein Skriptfenster ausgeführt wird, erhalten Sie bei der direkten Vorgehensweise im folgenden Beispiel den Dateinamen.
scr_name = Current Window() << get window title;
dt = Open("$SAMPLE_DATA/Big Class.jmp");
nw = New Window("My Report", Bivariate(Y(:weight), X(:height)), Text Box(scr_name));
Betreff: Namen des aktuellen Skripts abrufenIch weiß nicht, ob es eine Möglichkeit gibt, das zu tun.Ich setze am Anfang jedes Skripts eine Variable.Etwas mühsam, hilft aber beim Debuggen.
pname = „Mein Script.JSL“ ;
Betreff: Namen des aktuellen Skripts abrufenVersuchen Sie es mit:
Enthält (lDateien , „script.jsl“ ) ;
Ich habe dies verwendet, um eine JMP-Tabelle mithilfe von „.jmp“ zu finden, und es hat bei mir funktioniert.
Wenn ich Ihre Frage falsch verstanden habe, gibt es eine andere Möglichkeit, die Anzahl der Dateien im Verzeichnis zu durchlaufen und den Namen der Skriptdatei zu erhalten:
Für ( N = 1 , N <= N Artikel ( lDateien ) , N ++,
Datei =l Dateien [ N ] ;
Wenn (
Endet mit ( Datei , „.jsl“ ) ,/*Mach dein Ding*/;
Brechen();
);
);