web-dev-qa-db-fra.com

Comment exécuter des commandes Windows en Java et renvoyer le texte du résultat sous forme de chaîne

Dupliquer possible:
Obtenir la sortie d'un processus
Exécuter des commandes DOS depuis Java

J'essaie d'exécuter une commande cmd à partir d'un programme de console Java, par exemple:

ver

puis renvoyez le résultat de la commande dans une chaîne en Java, par exemple. sortie:

string result = "Windows NT 5.1"
11
Mike

Vous pouvez utiliser le code suivant pour cela 

import Java.io.*; 

    public class doscmd 
    { 
        public static void main(String args[]) 
        { 
            try 
            { 
                Process p=Runtime.getRuntime().exec("cmd /c dir"); 
                p.waitFor(); 
                BufferedReader reader=new BufferedReader(
                    new InputStreamReader(p.getInputStream())
                ); 
                String line; 
                while((line = reader.readLine()) != null) 
                { 
                    System.out.println(line);
                } 

            }
            catch(IOException e1) {e1.printStackTrace();} 
            catch(InterruptedException e2) {e2.printStackTrace();} 

            System.out.println("Done"); 
        } 
    }
28
Kamran Ali

Vous pouvez utiliser Runtime exec en Java pour exécuter des commandes dos à partir de code Java.

Process p = Runtime.getRuntime().exec("cmd /C ver");
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()),8*1024);

BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));

// read the output from the command

String s = null;
System.out.println("Here is the standard output of the command:\n");
while ((s = stdInput.readLine()) != null) 
System.out.println(s.replace("[","").replace("]",""));

Sortie = Microsoft Windows Version 6.1.7600

5
RanRag

Vous pouvez faire quelque chose comme:

String line;
Process p = Runtime.getRuntime().exec ("ver");
BufferedReader input =new BufferedReader(new InputStreamReader(p.getInputStream()));
BufferedReader error =new BufferedReader(new InputStreamReader(p.getErrorStream()));

System.out.println("OUTPUT");
while ((line = input.readLine()) != null)
  System.out.println(line);
input.close();

System.out.println("ERROR");
while ((line = error.readLine()) != null)
  System.out.println(line);
error.close();

Sur les commentaires de @RanRag, le problème principal est Windows versus Unix/Mac. 

  • WINDOWS: exec ("cmd/c ver");
  • UNIX FLAVOR: exec ("ver");
2
havexz

Regardez Java.lang.Runtime ou, mieux encore, Java.lang.Process

Ceci pourrait vous aider à démarrer.

1
duffymo