Exécuter le planificateur de tâches sans ouvrir une nouvelle instance JMPJ'essaie d'exécuter un script JSL qui met à jour diverses tables de données toutes les 3 heures à l'aide du planificateur de tâches Windows.Malheureusement, chaque fois que la JSL est exécutée, elle ouvre une nouvelle instance de JMP au lieu d'utiliser celle qui est déjà ouverte.Existe-t-il une astuce pour terminer cette automatisation des tâches sans qu'une nouvelle instance de JMP ne soit ouverte à chaque fois que le planificateur de tâches appelle le fichier JSL ?
ScriptRe : Exécuter le planificateur de tâches sans ouvrir une nouvelle instance JMPVous voudrez peut-être examiner la fonction Schedule() dans JMP.Il s'exécute dans une session JMP donnée et réexécute le code dans la même session.
Re : Exécuter le planificateur de tâches sans ouvrir une nouvelle instance JMPQuelques options.
1. Pourquoi ne pas simplement le laisser ouvrir une nouvelle instance, puis la fermer à la fin du script JMP ?
2. mettez `//!` au début du script et ouvrez-le.Il devrait s'ouvrir dans votre version actuellement enregistrée de jmp et s'exécuter automatiquement.
3. enregistrez le .jsl en tant que .jrp et il devrait faire la même chose que 2.
Personnellement, je préfère les choses non interactives comme celle-ci à faire 1, car je peux alors confirmer que JMP s'est fermé correctement dans powershell afin que je puisse donner de meilleurs messages d'erreur de console.
Re : Exécuter le planificateur de tâches sans ouvrir une nouvelle instance JMPJe vais jeter un œil à Jim et voir si cela fonctionne mieux que le planificateur de tâches.
Re : Exécuter le planificateur de tâches sans ouvrir une nouvelle instance JMPJe souhaite que le processus s'exécute dans l'instance existante afin de pouvoir tracer/évaluer périodiquement les données récemment collectées sans avoir à ouvrir JMP à chaque fois.
J'avais déjà utilisé l'option 2, mais celle-ci et l'option 3 ouvrent toujours une nouvelle instance de JMP plutôt que de s'exécuter dans l'instance déjà ouverte.Si vous exécutez le script suivant plusieurs fois, s'exécute-t-il dans l'instance actuelle de JMP ou ouvre-t-il également une nouvelle instance pour chaque exécution ? Curieux si vous obtenez un comportement différent que moi.
//!
Effacer le journal ();
Imprimer ("Bonjour le monde");
Re : Exécuter le planificateur de tâches sans ouvrir une nouvelle instance JMPOh, c'est probablement parce que votre registre a été foiré. Parce que ça marche très bien pour moi.Le fait-il même si vous ouvrez une table de données JMP ?Sous Windows ?
Réponse Volée d'ici
Je crois que vous pouvez corriger cela avec ce qui suit.
- Quitter toutes les sessions JMP en cours d'exécution
- Exécutez la version de JMP que vous souhaitez utiliser comme version de JMP par défaut (s'il vous arrive d'avoir plusieurs versions de JMP installées sur votre machine)
- Allez dans Fichier-->Préférences-->Spécifique à Windows, puis cliquez sur le bouton Réinitialiser les associations en bas de la fenêtre de dialogue
Cela devrait corriger le registre Windows pour associer la session JMP actuelle aux fichiers JMP.
Maintenant, essayez de double-cliquer sur vos fichiers et voyez s'il se comporte comme prévu.
Faites-nous savoir si cela résout le problème.
-Jeff
Re : Exécuter le planificateur de tâches sans ouvrir une nouvelle instance JMPJeff,
Merci pour les suggestions.Malheureusement, les étapes recommandées n'ont pas corrigé le problème.Fait intéressant, une autre de mes machines qui exécute JMP et JMP Pro n'a pas le même problème.Sur la machine où le problème se produit maintenant (j'ai récemment mis à jour de JMP 15 à 16), j'ai essayé les étapes que vous avez fournies et j'ai toujours le même problème où plusieurs instances sont ouvertes à chaque double-clic sur un fichier JSL.Je suis allé jusqu'à désinstaller toutes les versions de JMP, redémarrer l'ordinateur et réinstaller uniquement JMP 16, mais continue à ouvrir une nouvelle instance de JMP à chaque lancement d'un fichier JSL (en exécutant le script Hello World illustré ci-dessus ainsi qu'un autre script qui ouvre une table de données).D'autres idées sur la façon de résoudre ce problème ?