Lancer un fichier cmd

Résolu
Messages postés
66
Date d'inscription
vendredi 1 septembre 2006
Statut
Membre
Dernière intervention
1 août 2012
-
Messages postés
124
Date d'inscription
dimanche 5 octobre 2003
Statut
Membre
Dernière intervention
11 mai 2009
-
Bonjour,

Je chercher à lancer un fichier cmd.

Je fais ceci :
        Runtime r = Runtime.getRuntime();
        r.exec("C:\\Test.cmd");

mais il ne se passe rien, le fichier cmd n'est pas lancé et le compilateur Java ne rale pas.

Vous voyez ce qui ne va pas ?

Merci d'avance

10 réponses

Messages postés
124
Date d'inscription
dimanche 5 octobre 2003
Statut
Membre
Dernière intervention
11 mai 2009
16
La commande start dans une invite de
commande ou un fichier .bat lance une autre invite de commande et
permet de lancer un fichier passé en paramètre.

Exemple:
<li>tu as un fichier c:\temp\test.bat qui contient: start exec.cmd
</li><li>tu as un fichier c:\temp\exec.bat qui contient: ping -t free.Fr</li>
Tu n'as plus qu'à faire :


      public static void main (String [] args) {

                  try {

                       
Runtime run = Runtime.getRuntime ();

                       
run.exec ("c:\\temp\\test.cmd");

                  }

                 
catch (IOException exception) {

                       
exception.printStackTrace ();

                       
System.exit (1);

                  }

      }

et la console te saute aux yeux, en train de faire un ping sur free.fr

Je pense que c'est ce que tu cherches à faire.
Messages postés
124
Date d'inscription
dimanche 5 octobre 2003
Statut
Membre
Dernière intervention
11 mai 2009
16
Erratum: Pour l'exemple, ton  fichier c:\temp\test.bat contient: start c:\temp\exec.cmd
sinon il cherchera exec.cmd dans ton répertoire d'execution java.
Messages postés
66
Date d'inscription
vendredi 1 septembre 2006
Statut
Membre
Dernière intervention
1 août 2012

Mise à jour :

En fait ça marche presque. Dans mon cmd il y avait une pause c'est pour ça que ça ne semblait rien faire.

Le problème c'est que j'aimerais que la fenêtre 'Dos' s'affiche. Pensez-vous qu'il y ai une option pour ça ?

J'ai même essayé ceci mais ça ne le fait pas non plus :

        Runtime r = Runtime.getRuntime();
        Process p = r.exec("C:\\WINNT\\system32\\CMD.EXE " + test.cmd);

Merci
Messages postés
108
Date d'inscription
samedi 31 juillet 2004
Statut
Membre
Dernière intervention
12 septembre 2009
3
Si tu veut executer une commande dos , tu met la commande directement  en parametre du exec
;-)
Messages postés
492
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
16 mai 2007
12
Salut
Si tu veux faire une pause dans ta console ( pour que l'utilisateur ait le temps de lire ce qu'il y a d'afficher), il faut rajouter PAUSE dans ton batch.
A++
Messages postés
66
Date d'inscription
vendredi 1 septembre 2006
Statut
Membre
Dernière intervention
1 août 2012

Merci pour vos conseils mais en fait la console n'apparait pas du tout à l'écran et c'est ce que j'aimerai faire.

A mon avis il doit y avoir un paramètre à définir pour que le traitement tourne en montrant la fenêtre dos mais je vois pas quoi.

Du coup si je met un pause dans le fichier cmd, le programme JAVA attend que je fais un truc dans le fichier cmd mais comme la fenêtre dos n'apparait pas je ne peux pas continuer.
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
37
Salut :

C'est totalement logique que la fenêtre DOS n'apparait pas vu que tu utilise déja le mode console.

Si tu utilises une interface graphique tu auras cette fenêtre noire.
Messages postés
66
Date d'inscription
vendredi 1 septembre 2006
Statut
Membre
Dernière intervention
1 août 2012

Ha bhen oui ça me semble logique ça. Comment je fais pour lancer ce traitement en mode graphique svp ?

Merci
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
37
Salut :

import javax.swing.JFrame;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.io.IOException;



public class Fenetre extends JFrame implements ActionListener {
      private JButton bouton;



      public Fenetre () {
            super ("Lancer une commande MS-DOS");
            setBounds (50, 50, 300, 300);
            setDefaultCloseOperation (EXIT_ON_CLOSE);
            setResizable (false);
            getContentPane ().setLayout (null);



            bouton = new JButton ("Lancer une commande");
            bouton.setLocation (60, 100);
            bouton.setSize (bouton.getPreferredSize ());
            bouton.addActionListener (this);



            getContentPane ().add (bouton);
      }



      public void actionPerformed (ActionEvent event) {
            if (event.getSource () == bouton) {
                  try {
                        Runtime run = Runtime.getRuntime ();
                        run.exec ("notepad");
                  }
                  catch (IOException exception) {
                        exception.printStackTrace ();
                        System.exit (1);
                  }
            }
      }



      public static void main (String [] args) {
            Fenetre frame = new Fenetre ();
            frame.setVisible (true);
      }
}
Messages postés
66
Date d'inscription
vendredi 1 septembre 2006
Statut
Membre
Dernière intervention
1 août 2012

Merci pour ce beau petit code mais remplace le "notepad" par "cmd". Qu'obtiens tu ?

Chez moi, il n'y a pas de fenêtre dos qui s'ouvre par contre dans la liste des process j'ai bien un 'cmd.exe' qui tourne et qui quitte la liste des process quand je quitte l'application Java.

C'est ennuyeu dans le cas où je voudrais que Java me lance un fichier cmd dans lequel il y a des pauses en cas d'erreur.

Qu'en penses vous ?