2012-01-22 32 views
11

thể trùng lặp:
Get output from a process
Executing DOS commands from JavaLàm thế nào để chạy Windows lệnh trong JAVA và gửi lại văn bản kết quả như là một chuỗi

Tôi cố gắng để chạy một lệnh cmd từ bên trong một Chương trình điều khiển JAVA ví dụ:

ver 

và sau đó trả về đầu ra của lệnh thành một chuỗi trong JAVA, ví dụ: đầu ra:

string result = "Windows NT 5.1" 
+0

Tại sao downvote? – Mike

+3

Bạn nên tìm kiếm điều này trước khi bạn đặt câu hỏi này. Khi tôi tìm kiếm [chạy các lệnh Windows trong JAVA] (http://stackoverflow.com/search?q=run%20Windows%20commands%20in%20JAVA) trong tìm kiếm của stackoverflow, tôi nhận được kết quả dưới đây ... 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

Liên kết này sẽ giúp bạn: https://www.codepuran.com/java/execute-dos-command- java/ –

Trả lời

27

Bạn có thể sử dụng đoạn mã sau cho điều này

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

Bạn có thể làm một cái gì đó như:

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

On bình luận của @RanRag, vấn đề chính là Windows so với Unix/Mac .

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

Bạn cần gọi exec với 'Process p = Runtime.getRuntime(). exec (" cmd/C ver ");'. – RanRag

+1

Tôi phản ánh thay đổi đó..tx – havexz

5

Bạn có thể sử dụng Runtime exec trong java để thực hiện lệnh dos từ mã 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("]","")); 

Output = Microsoft Windows Version 6.1.7600

+0

+1 cho cửa sổ cụ thể soln ... – havexz

Các vấn đề liên quan