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

Entrée/Sortie Java Discussion :

API adiGuba : Affichage flux après execution


Sujet :

Entrée/Sortie Java

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 94
    Points : 44
    Points
    44
    Par défaut API adiGuba : Affichage flux après execution
    Hello le forum, adiGuba,

    j'ai vu que ton API simplifiait pas mal de choses alors j'essaye de l'utiliser. Voila le bout de prog que j'avais avant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    if (this.name.contains(".pl")) {
                    /* if it's a perl file */
                    try {
                        runtime.exec(new String[]{"cmd", "/c", "perl", scriptFile}, // script perl à  exécuter
                                null, // variable d'environnement par défaut
                                new File(cmdDirectory) // répertoire d'exécution de mon script perl
                                );
                        this.success();
     
                    } catch (IOException ex) {
                        this.error(ex);
                    }
     
                } else if (this.name.contains(".vbs")) {
                    /* if it's a visualBasic file */
                    try {
                        runtime.exec(new String[]{"cmd", "/c", scriptFile}, // script perl à exécuter
                                null, // variable d'environnement par défaut
                                new File(cmdDirectory) // répertoire d'exécution de mon script perl
                                );
                        this.success();
     
                    } catch (IOException ex) {
                        this.error(ex);
                    }
    1/ Si l'utilisateur n'a pas setter sa variable d'environnement pour Perl, ou n'a pas Perl d'installer... je n'ai rien qui le notifie

    2/ Je ne réccupère pas le flux de sortie suite à l'exécution de mes scripts...

    Alors j'ai décider de prendre l'API de adiGuba et j'ai fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    Shell = new Shell();
    StringBuilder out = new StringBuilder();
    StringBuilder err = new StringBuilder();
     
    /**
    * Je ne suis pas sûr de ce qui suit : c'est à dire que mon scriptFile qui est
    * dans un répertoire (Rep1) doit s'exécuter dans un autre répertoire (Rep2) 
    * mais je ne sais pas comment écrire tout cela en une seule ligne....
    */
    process = sh.command("cmd", "/c", "perl", scriptFile, "-d", cmdDirectory);
     
    /**
    * Comment cette fonction juge que le process est en erreur ? 
    */
    process.error(err);
    process.output(out);
    Merci d'avance pour les infos,
    Bap

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,



    Déjà tu utilises mal la méthode command().
    Tu n'as pas à préciser le shell (cmd /C) puisque c'est précisément ce que fait mon API de manière portable
    Enfin la méthode command attend une ligne de commande tel que le shell devra la recevoir, et non pas les arguments séparés un à un.

    Tu devrais donc utiliser la forme suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    process = sh.command("perl " + scriptFile + " -d " + cmdDirectory);
    La méthode command() à argument variable permet seulement de simplifier cela via la classe MessageFormat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    process = sh.command("perl {0} -d {1}",
                 scriptFile, // remplacera {0} 
                 cmdDirectory // remplacera {1}
    );

    Enfin il faut appeler la méthode consume() afin d'exécuter le programme en redirigeant les flux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Shell = new Shell();
    StringBuilder out = new StringBuilder();
    StringBuilder err = new StringBuilder();
     
    process = sh.command("perl {0} -d {1}",
    	scriptFile, cmdDirectory);
     
    // On redirige les flux d'erreur et de sortie :
    process.error(err);
    process.output(out);
     
    // Et on exécute le programme en redirigeant les flux :
    int retour = process.consume();
    Après la méthode consume(), les StringBuilder contiendront les messages de sorties de la commande...


    a++

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 94
    Points : 44
    Points
    44
    Par défaut
    Hello adiGuba, le forum.

    merci pour le coup de main, c'est ce que je cherchais..!

    Bap

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

Discussions similaires

  1. Réponses: 27
    Dernier message: 21/04/2014, 15h05
  2. problème d'affichage après execution d'une macro
    Par ptitemar dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 07/08/2007, 17h45
  3. affichage après execution du script
    Par gene69 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 27/05/2007, 23h00
  4. Réponses: 4
    Dernier message: 06/10/2006, 13h11
  5. [API Windows]Affichage en Gras
    Par Zazeglu dans le forum Windows
    Réponses: 12
    Dernier message: 05/02/2004, 19h17

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