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

avec Java Discussion :

exécution de multiples commandes DOS


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2007
    Messages : 41
    Par défaut exécution de multiples commandes DOS
    Bonjour à tous,

    je suis actuellement en stage de bioinformatique, et je dois créer un programme permettant d'analyser des lipides par spectrométrie de masse en intégrant java et C++... En fin là n'est pas la question

    Je voudrais exécuter deux lignes de commande avec java, et que j'ai déjà testé sur le DOS de mon win XP. Voici ces 2 commandes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    cd c:\mzWiff\Debug
    mzwiff --mzXML -v C:\Directory\fichier.wiff
    et ça fonctionne. Maintenant, voilà ce que j'ai écrit dans mon code java:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    try {
            // Execute a command with an argument
            String[] command =new String[] {"cd","c:\\mzWiff\\Debug"};
            String[]command2 = new String[]{"mzwiff","--mzXML","-v","C:\\Directory\\"+ wiffFile.getName()};
            Process child = Runtime.getRuntime().exec(command);
            Process child2 = Runtime.getRuntime().exec(command2);
    } catch (IOException io) {}
    mais ça bloque à l'exécution de ma première commande... J'ai cherché partout sur le net, mais rien ne m'a aidé!
    Quelqu'un saurait il ou est l'erreur et pourrait éventuellement me corriger svp?

    Merci d'avance

  2. #2
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2007
    Messages : 41
    Par défaut
    tu veux dire avec le .getinputstream et .getoutputstream ???

  4. #4
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Et "cd" n'est pas une commande, mais un paramètre de "cmd.exe".
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2007
    Messages : 41
    Par défaut
    J'ai essayé de modifier mon code mais ça n'a pas marché!!! Donc, quelqu'un pourrait me dire ce que je dois écrire exactement svp??

  6. #6
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Citation Envoyé par linalin Voir le message
    J'ai essayé de modifier mon code mais ça n'a pas marché!!! Donc, quelqu'un pourrait me dire ce que je dois écrire exactement svp??
    Modifé comment ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2007
    Messages : 41
    Par défaut
    j'ai enlevé le cd vu que ce n'est une commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String[] command =new String[] {"C:\\WINDOWS\\System32\\cmd.exe","c:\\mzWiff\\Debug"};
    Par contre, pour les getinputstram et getoutputstream, je n'ai pas vu leur utilisation dans aucun autre site. ça bloque vraiment à "Process child = Runtime.getRuntime().exec(command);" donc même si je récupère les flux, ça ne le fera pas vu que le debug ne depasse pas cette ligne!

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2007
    Messages : 41
    Par défaut
    Finalement, ça bloque sur le deuxieme process
    Une idée??

  9. #9
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Ce serait plutôt quelque chose comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    String[] args = new String[]{"cd c:\\mzWiff\\Debug", "mzwiff --mzXML -v C:\\Directory\\" + wiffFile.getName()};
    Runtime.getRuntime().exec(args);
    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2007
    Messages : 41
    Par défaut
    C'est toujours faux...
    Finalement, je fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    String[] command = new String[] {"C:\\WINDOWS\\System32\\cmd.exe", "C:\\mzWiff\\Debug"};
    String[]command2 = new String[]{"C:\\mzWiff\\Debug\\mzWiff.exe","--mzXML","-v","C:\\Directory\\"+ wiffFile.getName()};
    try {
            // Execute a command with an argument
            Runtime r = Runtime.getRuntime();
            Process child = r.exec(command);
            Process child2 = r.exec(command2);
            JOptionPane.showMessageDialog(frame, "mzxml file created");
    } catch (Exception io) {
        	System.out.println("error" + io);
    }
    et ça ne bloque plus, par contre rien ne s'exécute!
    Est ce qu'il faut que je récupère les flux??
    Si oui, comment je fais dans le cas précis??

    Merci

  11. #11
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Non, il n'y a pas besoin de récupérer les flux (sauf pour analyser d'éventuelles erreurs ou echo en sortie)
    Ce qui est sûr, c'est que si tu passes par 2 exec, ce que tu as fais dans le premier n'est pas récupéré par le second et chaque élément de ton tableau doit contenir la commande complète (pas args[0]+args[1], args[2]+args[3] etc...).
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2007
    Messages : 41
    Par défaut
    Merci beaucoup, ça marche! Tu avais raison, il fallait que je mette toutes mes commande dans un seul tableau!

    Voilà ce que j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    String[] command = new String[] {"C:\\WINDOWS\\System32\\cmd.exe", "C:\\mzWiff\\Debug", "C:\\mzWiff\\Debug\\mzWiff.exe","--mzXML","-v","C:\\Directory\\"+ wiffFile.getName()};
    try {
    Runtime r = Runtime.getRuntime();      
    Process child = r.exec(command);	       
    JOptionPane.showMessageDialog(frame, "mzxml file created");
    } catch (Exception io) {
    	System.out.println("error" + io);			
    }
    et ça s'exécute impec...

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

Discussions similaires

  1. Exécution de plusieurs commandes DOS en java
    Par tomzdi dans le forum Général Java
    Réponses: 3
    Dernier message: 03/07/2013, 19h27
  2. Réponses: 3
    Dernier message: 10/09/2009, 11h08
  3. Réponses: 1
    Dernier message: 12/08/2009, 11h58
  4. Exécution d'une commande DOS
    Par gobgob dans le forum VBScript
    Réponses: 6
    Dernier message: 19/09/2007, 12h23
  5. [VB]Problème d'exécution d'une commande dos...
    Par Empty_body dans le forum VB 6 et antérieur
    Réponses: 21
    Dernier message: 17/02/2006, 12h28

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