IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AppleScript Discussion :

Lancer une commande sur terminal


Sujet :

AppleScript

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 17
    Points : 4
    Points
    4
    Par défaut Lancer une commande sur terminal
    Bonsoir,

    ne connaissant quasi rien a applescript
    est ce qu'une âme charitable pourrais m aider a améliorer ce petit script?

    Code applescript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    tell application "Terminal"
     
    activate
    do script "cd /Applications/plansoft
    ./DxStartW *ID *Nom *Age"
     
    end tell

    jusque la tout fonctionne
    1* Comment faire pour fermer le terminal après que l'application soit lancé?
    2* Comment mettre l'application lancé en premier plan?

    Voila tout simple mais pour moi pfiiuuuueeee :-)

    D'avance 1000 merci pour votre support et votre aide

    DrJonesX

  2. #2
    Membre éprouvé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 602
    Points : 1 239
    Points
    1 239
    Par défaut
    Bonjour Drjonesx,

    Tu n'as pas besoin d'ouvrir le terminal pour lancer un script shell dans Applescript.
    il faut utiliser l'instruction "do shell script". Voici un exemple qui reprend ta demande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    set Mid to 12345
    set Nom to "drjonesx"
    set Age to 25
    
    do shell script "cd /Applications/plansoft./DxStartW *" & Mid & " *" & Nom & " *" & Age
    En particulier tu vois que tu peux insérer des variables Applescript au milieu de l'instruction, comme si elles étaient entrées sur le terminal.
    Il faut toutefois ce souvenir que ces commandes ne sont pas visibles dans le Terminal, même si celui-ci est déjà ouvert. "Do shell script" revient à ouvrir une session virtuelle, non visible. Mais les instructions sont bien lancées !
    Enfin, pour être complet, sache que le résultat des commandes peut être lu dans Applescript sous forme d'une variable.

    Ceci étant dit, je trouve ton instruction Terminal un peu surprenante : vouloir changer de répertoire dans un AS... mais il est vrai je n'ai pas toutes les données de ton problème.
    j'espère toutefois avoir répondu à ta question.

    Cordialement

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 17
    Points : 4
    Points
    4
    Par défaut
    Avant tout merci PBell de ton aide
    je vais essayer d'etre le plus clair possible
    je voudrais par le biais de d'un bouton dans filemaker pro lancer une ligne de commande (AS)
    jusqu'a présent je faisait cela et ca marchais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    tell application "Finder"
     
    tell application "Terminal"
    activate
    do script "cd /Applications/Plansoft
    ./DxStartW id nom age"
    delay 1
    end tell
     
    tell application "Finder"
    set the visible of process "Terminal" to false
    end tell
     
    end tell
    Seulement ce n'est pas très joli car
    ca ouvre le terminal et ca lance l application mais en arrière plan


    Ma demande serait donc de pouvoir ouvrir l'application, passer les paramètres id nom age et mettre l'application en 1er plan voila tout
    j'imagine que cela doit être très simple mais je n'ai réussi à faire que cela

    D'avance merci pour le temps que tu me consacre
    PS j' ai teamviewer si ca peux être plus facile?

    1000x merci

    DrJonesX ;-)

  4. #4
    Membre éprouvé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 602
    Points : 1 239
    Points
    1 239
    Par défaut
    Bonsoir Drjonesx,
    Il y a bien longtemps que je n'ai pas ouvert Filemaker, mais ton explication m'indique que tu sais associer un script AS à un bouton sur FM.
    Très bien.

    Tout d'abord, pour prendre ton script au pied de la lettre, si il s'agit de fermer le terminal, tu peux simplifier et demander à AS de quitter Terminal. Cela devrait fonctionner avec le script ci-dessous, mais ce n'est pas toujours très propre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    tell application "Terminal"
    activate
            do script "cd /Applications/Plansoft./DxStartW id nom age"
    delay 4
    quit
    end tell
    Ce que je ne perçois pas bien, c'est que ta commande CD ouvre une application (DxStartW je suppose, d'après ce que j'ai trouvé sur datacondental.com ?). Pour moi, CD ne fait que changer de répertoire courant
    Mais pourtant, c'est bien ce qu'indique la doc de datacondental...?

    Donc en supposant que cette documentation est correcte, le script que j'ai indiqué ce matin doit lancer l'application. Ce qu'il faut, c'est la mettre en premier plan.
    Je suggère que tu la lances une fois dans le terminal et que tu regardes le nom de cette application tel qu'il est affiché dans ton Dock.
    Pour mettre une application au premier plan, il suffit d'une ligne de script AS (qui doit donc se trouver après ton "do sheel script" de mon AS de ce matin) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tell application "Mon_Application" to activate
    Lors de la compilation de ce script, l'éditeur AS va rechercher l'application "Mon_Application" et tu dois lui indiquer où elle est dans le dialogue qui s'affiche.

    Cordialement

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 17
    Points : 4
    Points
    4
    Par défaut
    Encore merci de te pencher sur le problème
    voila ce que je constate

    tell application "Terminal"
    activate
    do script "cd /Applications/Plansoft./DxStartW id nom age" <= ici si je ne vais pas à la ligne avant le . ca ne marche pas
    ./DxStartW *ID *N *A"
    delay 4
    quit <= ici le fait de le faire quitter directement cloture la commande du terminal et donc plus rien ne ce passe (comme si le script c'est arrêté prématurément)
    end tell


    Pour moi, CD ne fait que changer de répertoire courant
    Exacte puisqu'on nous demande ceci
    je t'envoi ca en PM après je re modifierai les donné pour ne pas avoir de problème de confidentialité et que cela puisse servir à d'autres :-)

  6. #6
    Membre éprouvé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 602
    Points : 1 239
    Points
    1 239
    Par défaut
    Bonjour,

    Je vois 2 possibilités (désolé, impossible de tester chez moi) :

    1) je suppose que le logiciel n'a pas besoin d'être lancé dans son répertoire courant et la commande cd est juste là pour te permettre de trouver l'application.
    Pour vérifier, il faut que tu testes directement dans le Terminal l'instruction suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    open /Applications/Planmeca/Romexis/pmbridge./DxStartW *ID *N *A
    Si l'application s'ouvre avec les paramètres adéquats, alors on va insérer cette commande dans un do shell script avec les 3 variables ajoutées comme dans le premier script proposé.

    2) le logiciel doit être lancé dans le répertoire par défaut, et dans ce cas, il faut enchaîner, dans le do shell script, les 2 lignes de commande, cd et open.
    Pour chaîner 2 lignes de commandes, il faut ajouter soit ajouter un caractère ";" soit un line feed (ascii 10). Le ";" a le mérite d'être plus lisible :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    set Mid to 12345 --la valeur de l'ID patientset Nom to "drjonesx" -- la valeur du Nom
    set Age to 25 -- la valeur de son age
    
    
    do shell script "cd /Applications/plansoft; ./DxStartW *" & Mid & " *" & Nom & " *" & Age
    Attention, bien mettre le ";" après la commande "cd /Applications/plansoft" !
    Quant aux 3 variables, tu dois mettre des valeurs qui fonctionnent chez toi (je suppose que le script complet doit prendre ces valeurs de FileMaker..?)

    Donne nous le résultat de ces 2 tests.
    Cordialement

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 17
    Points : 4
    Points
    4
    Par défaut
    Sorry PBELL je viens de rentrer

    do shell script "cd /Applications/Plansoft; ./DxStartW *ID *N *A
    fonctionne parfaitement genial sans terminal bref top :-) un grand merci


    Par contre comment faire pour mettre du coups cette application en premiere page (frontpage) histoire de ne pas chaque fois clique sur l'icône pour la faire apparaitre?


    En tout un super grand merci pour cette premier étape de mon problème

  8. #8
    Membre éprouvé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 602
    Points : 1 239
    Points
    1 239
    Par défaut
    Bonjour,
    Parfait pour cette première étape !
    Il y 2 méthodes possibles pour mettre une application au premier plan :

    En s'adressant à l'application :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tell application "Mon_App" to activate
    ou en s'adressant à son processus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tell process "Mon_App" to set frontmost to true
    Dans les 2 cas, il faut mettre le nom de l'application exact.
    J'utilise le premier quand je suis certain que l'application est scriptable et lorsque je ne suis pas certain qu'elle soit déjà ouverte. En effet "Activate" lance l'application si elle ne l'est pas déjà.
    J'utilise le second si l'application ne répond pas à "activate" (c'est rare). Cela suppose que l'application est déjà ouverte. En passant par la notion de processus, cela permet aussi, de boucler sur la recherche de processus (si l'application met du temps à s'ouvrir, on peut boucler jusqu'à ce que le processus soit là !)

    A toi d'essayer les 2 avec ton application.
    Je précise que le nom exact est , pour l'application, celui qui est affiché au dessus de l'icône de l'application dans le Dock lorsqu'elle est ouverte.
    Pour le processus (en général identique à l'application) le petit script ci-dessous permet de connaître les noms de tous les processus ouverts
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    tell application "Finder"    
    get every process
    end tell
    Une fois exécuté, le résultat est dans la fenêtre Evénements/Réponses de l'éditeur de scripts

    Cordialement

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 17
    Points : 4
    Points
    4
    Par défaut
    Encore une fois un super grand merci PBELL

    tell application "Mon_Application" to activate
    fonctionne parfaitement mais dans mon cas malheureusement non
    j ai pris contact aujourd'hui avec le fournisseur qui me confirme que c'est chez eux que ca été programmé comme ca et que donc du coups il nous est quasi impossible de passer la fenêtre en front sans l'activer avec la souris

    En tout cas un grand merci PBELL pour ta patiente et tes explications

    Merci

  10. #10
    Membre éprouvé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 602
    Points : 1 239
    Points
    1 239
    Par défaut
    Bonsoir,
    Il y a encore des programmeurs de ce genre...! J'espère au moins que l'application, à défaut d'être conforme à l'interface utilisateur préconisée, est efficace dans son domaine !

    Dernier essai possible : (en remplaçant "Mon_App" par le nom de ton application !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tell application "System Events" to set frontmost of process "Mon_App" to true
    J'ai essayé avec toutes mes applications, cela fonctionne...donc à tout hasard

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. bouton pour lancer une commande shell sur le web
    Par hamdii dans le forum Langage
    Réponses: 3
    Dernier message: 08/04/2012, 12h56
  2. Lancer une commande DOS après clic droit sur dossier
    Par Invité(e) dans le forum Windows
    Réponses: 3
    Dernier message: 17/01/2011, 00h27
  3. Exécuter une commande sur Terminal
    Par riadh8 dans le forum Linux
    Réponses: 2
    Dernier message: 28/05/2009, 19h13
  4. Réponses: 1
    Dernier message: 30/04/2004, 11h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo