新しいJMPインスタンスを開かずにタスクスケジューラを実行するWindowsタスクスケジューラを使用して、3時間ごとにさまざまなデータテーブルを更新するJSLスクリプトを実行しようとしています。残念ながら、JSLが実行されるたびに、すでに開いている既存のインスタンスを使用する代わりに、JMPの新しいインスタンスが開きます。タスクスケジューラがJSLファイルを呼び出すたびにJMPの新しいインスタンスを開かずに、このタスクの自動化を完了するためのトリックはありますか?
スクリプティング再:新しいJMPインスタンスを開かずにタスクスケジューラを実行するJMPのSchedule()関数を調べることをお勧めします。特定のJMPセッションで実行され、同じセッションでコードを再実行します。
再:新しいJMPインスタンスを開かずにタスクスケジューラを実行するいくつかのオプション。
1.新しいインスタンスを開いて、JMPスクリプトの最後で閉じるだけではどうでしょうか。
2.スクリプトの先頭に `//!`を置き、それを開きます。現在登録されているバージョンのjmpで開き、自動実行されます。
3. .jslを.jrpとして保存すると、2と同じようになります。
私は個人的に、このような非対話型の処理を1で行うことを好みます。これは、PowerShellでJMPが適切に閉じられたことを確認できるため、コンソールのエラーメッセージを改善できるためです。
再:新しいJMPインスタンスを開かずにタスクスケジューラを実行するジムを覗いて、これがタスクスケジューラよりもうまく機能するかどうかを確認します。
再:新しいJMPインスタンスを開かずにタスクスケジューラを実行する毎回JMPを開かなくても、最近収集したデータを定期的にプロット/評価できるように、プロセスを既存のインスタンスで実行する必要があります。
私はすでにオプション2を使用していましたが、オプション2とオプション3は、すでに開いているインスタンス内で実行するのではなく、常にJMPの新しいインスタンスを開きます。次のスクリプトを複数回実行すると、JMPの現在のインスタンス内で実行されますか、それとも実行ごとに新しいインスタンスが開かれますか? あなたが私とは違う振る舞いをするかどうか興味があります。
//!
Log();をクリアします。
印刷( "Hello World");
再:新しいJMPインスタンスを開かずにタスクスケジューラを実行するああ、それはおそらくあなたのレジストリがめちゃくちゃになったからでしょう。 それは私にとって素晴らしいことです。JMPデータテーブルを開いてもそれはできますか?Windowsでは?
ここから盗まれた答え
これは次のように修正できると思います。
- 実行中のすべてのJMPセッションを終了します
- デフォルトのJMPバージョンとして使用するJMPバージョンを実行します(マシンに複数のJMPバージョンがインストールされている場合)
- [ファイル]-> [設定]-> [Windows固有]に移動し、ダイアログウィンドウの下部にある[関連付けのリセット]ボタンをクリックします
これにより、Windowsレジストリが修正され、現在のJMPセッションがJMPファイルに関連付けられます。
次に、ファイルをダブルクリックして、期待どおりに動作するかどうかを確認します。
それで問題が解決するかどうかお知らせください。
-ジェフ
再:新しいJMPインスタンスを開かずにタスクスケジューラを実行するジェフ、
提案をありがとう。残念ながら、推奨される手順では問題は修正されませんでした。興味深いことに、JMPとJMPProを実行している私の別のマシンには同じ問題はありません。問題が発生しているマシン(最近JMP 15から16に更新しました)で、提供された手順を試しましたが、JSLファイルをダブルクリックするたびに複数のインスタンスが開かれるという同じ問題が発生します。すべてのJMPバージョンをアンインストールし、コンピューターを再起動して、JMP 16だけに再インストールしましたが、JSLファイルを起動するたびにJMPの新しいインスタンスを開いたままにします(上記のHelloWorldスクリプトと別のスクリプトを実行します)。データテーブルを開くスクリプト)。これを解決する方法についてさらにアイデアはありますか?