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

Java Discussion :

Lancement d'un fichier .cmd ou .bat via java, avec passage de paramètre


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2010
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2010
    Messages : 149
    Par défaut Lancement d'un fichier .cmd ou .bat via java, avec passage de paramètre
    Bonjour à tous,

    Après maintes recherches, je bloque sur le passage de paramètres lors du lancement d'un script (.cmd / .bat) via java.

    Durant mes recherches, je suis tombé sur deux methodes pour lancer un script.

    1ère methode -> Utilisation de Runtime

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Runtime runtime = Runtime.getRuntime();
    String[] command = {"cmd", "/c", "Start", "C:\\test.bat "};
    Process p = runtime.exec(command);
    2ème methode -> utilisation de Desktop
    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
    if (Desktop.isDesktopSupported()) {
                        String nomFichier = ".\\Interface\\test.cmd " + "/" + usernameOC; //+ " " + "//" + sequenceToLaunch; // Le nom du fichier
                        File fichier = new File(nomFichier); // Le fichier
                        Desktop desk = Desktop.getDesktop(); // Le lanceur
                        try {
                            desk.open(fichier); // Lancer le fichier
     
                        } catch (IOException ex) {
                            Logger.getLogger(Interface_Panel.class.getName()).log(Level.SEVERE, null, ex);
                        }
     
                    }
                } catch (Exception e) {
                    Logger.getLogger(Interface_Panel.class.getName()).log(Level.SEVERE, null, e);
                }
    Jusque là tout va bien.

    Seulement, mes scripts doivent prendre deux parametres en entrée, et je ne sais pas comment les passer en utilisant l'une de ces deux methodes...

    Avec chacune des methodes précédentes, j'ai tenté de les passer comme si je lancais le script via l'invite de commande, mais sans succès
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String[] command = {"cmd", "/c", "Start", "C:\\test.bat param1 param2"};
    Puis j'ai essayé avec le / (lu sur un forum lors de mes recherches), toujours sans succès :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String[] command = {"cmd", "/c", "Start", "C:\\test.bat " + "/" + param1};
    Savez-vous s'il est possible d'utiliser l'une de ces 2 methodes pour lancer le script avec passage de parametre ? ou bien s'il existe une autre solution ?

    Merci d'avance.

  2. #2
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Salut,


    L'API Desktop n'est pas faite pour cela donc c'est à oublier.
    Son but est simplement d'ouvrir un fichier selon l'extension du système. C'est sûr que cela exécutera un bat/cmd mais tu ne pourras pas lui passer d'argument.


    Runtime est un peu obsolète.
    Depuis Java 5 on lui préfèrera ProcessBuilder, et en particulier avec Java 7 et la méthode inheritIO() qui gère automatiquement les flux d'E/S.


    Ensuite, reste à savoir ce que tu veux faire exactement.
    Si tu veux simplement lancer un process avec des arguments, il te suffit de passer chaque argument distinct comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    		Process process = new ProcessBuilder("C:\\test.bat", "param1", "param2")
    			.inheritIO().start();
    Mais attention les arguments sont passé tel quel, et l'on ne peur préciser qu'un seul process (pas de pipe, redirection ou autres spécificités du shell).


    Si tu veux exécuter une ligne de commande il faut alors utiliser le shell du système hôte, via cmd /C (sous Windows) ou /bin/sh -c (sous Unix/Linux).
    Mais dans ce cas là il faut passer exactement 3 arguments, et le troisième contenant toute la ligne de commande que tu souhaites exécuter (et qui peut alors contenir toutes expressions interprétées par le shell) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    		Process process = new ProcessBuilder("cmd", "/C", "C:\\test.bat param1 param2")
    			.inheritIO().start();
    Après bien sûr tu peux remplacer le inheritIO() pour traiter manuellement les flux de sorties...


    Cela ne marchait pas dans ton exemple car tu passait uniquement "Start" en troisième argument, ce qui se contente d'ouvrir une nouvelle fenêtre de commande sous Windows...


    a++

Discussions similaires

  1. Générer fichiers word ou pdf via java.
    Par tapoutapou dans le forum Documents
    Réponses: 4
    Dernier message: 15/07/2010, 17h02
  2. Réponses: 3
    Dernier message: 18/03/2009, 10h05
  3. Appel d'un fichier PHP avec passage de paramètre
    Par Claude_Azoulai dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 25/09/2008, 15h27
  4. LANCEMENT fichier cmd
    Par dahu17 dans le forum C#
    Réponses: 7
    Dernier message: 12/04/2007, 10h25
  5. Exécution d'un fichier .cmd via PowerBuilder
    Par tagada le hun dans le forum Powerbuilder
    Réponses: 1
    Dernier message: 19/01/2007, 16h20

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