2012-01-22 13 views
11

Duplicar posible:
Get output from a process
Executing DOS commands from JavaCómo ejecutar comandos de Windows en Java y devolver el texto resultado como una cadena

Estoy intentando ejecutar un comando cmd desde dentro de una Programa de consola JAVA, por ejemplo:

ver 

y luego devuelva la salida del comando a una cadena en JAVA, p. Ej. Salida:

string result = "Windows NT 5.1" 
+0

Por qué la downvote? – Mike

+3

Deberías haber buscado esto antes de hacer esta pregunta. Cuando busco [ejecutar comandos de Windows en JAVA] (http://stackoverflow.com/search?q=run%20Windows%20commands%20in%20JAVA) en la búsqueda de stackoverflow, obtuve los resultados a continuación ... http: // stackoverflow.com/questions/2935326/java-library-api-to-help-run-windows-commands http://stackoverflow.com/questions/4031390/executing-dos-commands-from-java http: // stackoverflow. com/questions/7112259/how-to-execute-windows-commands-using-java-change-network-settings –

+0

Este enlace lo ayudará: https://www.codepuran.com/java/execute-dos-command- java/ –

Respuesta

27

Usted puede utilizar el siguiente código para este

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"); 
     } 
    } 
2

Usted puede hacer algo como:

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(); 

El comentario de @RanRag, la cuestión principal es Windows frente Unix/Mac .

  • WINDOWS: exec ("cmd/c ver");
  • UNIX FLAVOR: exec ("ver");
+0

Necesita llamar a exec con 'Process p = Runtime.getRuntime(). exec (" cmd/C ver ");'. – RanRag

+1

Reflejo ese cambio..tx – havexz

5

Puede usar Runtime exec en java para ejecutar dos comandos desde el código 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("]","")); 

salida = Microsoft Windows Version 6.1.7600

+0

+1 para la solución específica de Windows ... – havexz

Cuestiones relacionadas