新しい JMP インスタンスを開かずにタスク スケジューラを実行するWindows タスク スケジューラを使用して、3 時間ごとにさまざまなデータ テーブルを更新する JSL スクリプトを実行しようとしています。残念ながら、JSL が実行されるたびに、すでに開いている既存のインスタンスを使用するのではなく、JMP の新しいインスタンスが開きます。タスク スケジューラが JSL ファイルを呼び出すたびに JMP の新しいインスタンスを開かずにこのタスクの自動化を完了するコツはありますか?
自動化とスクリプト作成Re: 新しい JMP インスタンスを開かずにタスク スケジューラを実行する興味深く、非常に有益な提案をありがとうございます。単一のデータ ファイルの使用方法には何の問題もありませんでしたが、データ ファイルの「対話型」コピーというあなたの提案にはいくつかの利点があることがわかります。
JMP の複数のインスタンスの問題に関しては、私の場合、Windows のコントロール パネルを使用して特定のプログラムで開くようにファイルの種類を設定した場合にのみ問題が解決しました (プログラム ノート 52261 を参照)。

Re: 新しい JMP インスタンスを開かずにタスク スケジューラを実行する追加のオプションは、データの取得と視覚化を分離することです。タスク スケジューラ スクリプトが毎回 JMP の新しいコピーを開いて、コンピュータ上のどこかのデータ テーブルを更新できるようにします。 次に、JMP の「対話型」コピーに、他のスクリプトによって保存されたファイルから定期的に更新するスクリプトを含めます。これにより、ソース データへの接続に遅延が発生しても、グラフを操作するときに JMP がハングアップしたり遅れたりすることがなくなるため、ユーザー エクスペリエンスが向上する傾向があります。
JMP の同じインスタンスで jsl ファイルを開くことについては、JMP サポートに連絡して問題を解決することをお勧めします。
Re: 新しい JMP インスタンスを開かずにタスク スケジューラを実行するジェフ、
ご提案ありがとうございます。残念ながら、推奨されている手順では問題は解決されませんでした。興味深いことに、JMP と JMP Pro を実行している私の別のマシンには同じ問題がありません。現在問題が発生しているマシン (最近 JMP 15 から 16 に更新しました) で、ご提供いただいた手順を試してみましたが、JSL ファイルをダブルクリックするたびに複数のインスタンスが開かれるという同じ問題が依然として発生しています。すべての JMP バージョンをアンインストールし、コンピュータを再起動して JMP 16 のみを再インストールしましたが、引き続き JSL ファイルを起動するたびに JMP の新しいインスタンスが開かれたままになります (上記の Hello World スクリプトと別のスクリプトを実行しています)データテーブルを開くスクリプト)。これを解決する方法についてさらにアイデアはありますか?
Re: 新しい JMP インスタンスを開かずにタスク スケジューラを実行するああ、レジストリが壊れている可能性があります。 なぜなら、それは私にとって素晴らしいことだからです。JMP データテーブルを開いた場合でも同じことが行われますか?Windows では?
回答はここから盗まれました
これは次のように修正できると思います。
- 実行中のすべての JMP セッションを終了します。
- デフォルトの JMP バージョンとして使用したい JMP バージョンを実行します (マシンに複数の JMP バージョンがインストールされている場合)。
- [ファイル] --> [設定] --> [Windows 固有] に移動し、ダイアログ ウィンドウの下部近くにある [関連付けのリセット] ボタンをクリックします。
これにより、Windows レジストリが修正され、現在の JMP セッションが JMP ファイルに関連付けられるはずです。
次に、ファイルをダブルクリックして、期待どおりに動作するかどうかを確認してください。
問題が解決したかどうかお知らせください。
-ジェフ
Re: 新しい JMP インスタンスを開かずにタスク スケジューラを実行する毎回 JMP を開かなくても、最近収集したデータを定期的にプロット/評価できるように、プロセスを既存のインスタンスで実行したいと考えています。
私はすでにオプション 2 を使用していましたが、オプション 3 と同様に、すでに開いているインスタンス内で実行するのではなく、常に JMP の新しいインスタンスを開きます。次のスクリプトを複数回実行する場合、JMP の現在のインスタンス内で実行されますか、それとも実行のたびに新しいインスタンスも開きますか? あなたが私とは異なる行動をとるかどうかに興味があります。
//!
ログをクリア();
Print (「Hello World」);
Re: 新しい JMP インスタンスを開かずにタスク スケジューラを実行するJim を覗いてみて、これがタスク スケジューラよりもうまく機能するかどうかを確認してみます。
Re: 新しい JMP インスタンスを開かずにタスク スケジューラを実行するいくつかのオプション。
1. 新しいインスタンスを開かせて、JMP スクリプトの最後でそれを閉じてみてはどうでしょうか?
2. スクリプトの先頭に「//!」を付けて、スクリプトを開きます。現在登録されているバージョンの jmp で開き、自動実行されます。
3. .jsl を .jrp として保存すると、2 と同じことが行われるはずです。
個人的には、このような非対話型の処理を 1 で実行することを好みます。そうすれば、PowerShell で JMP が適切に閉じられたことを確認でき、より適切なコンソール エラー メッセージを表示できるからです。
Re: 新しい JMP インスタンスを開かずにタスク スケジューラを実行するJMP の Schedule() 関数を調べてみるとよいでしょう。これは特定の JMP セッションで実行され、同じセッションでコードが再実行されます。