2015-10-05 19 views
6
public static String executeCommand(String command) { 
    StringBuffer sb = new StringBuffer(); 
    Process p; 
    try { 
     p = Runtime.getRuntime().exec(command); 
     p.waitFor(); 
    } BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream())); 
     String line = ""; 
     while ((line = reader.readLine()) != null) { 
     sb.append(line + "\n"); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return sb.toString(); 
} 

mã đã cho đang hoạt động tốt để thực hiện bất kỳ lệnh nào nhưng tôi có lệnh muốn CÓ/KHÔNG làm đầu vào. Làm thế nào tôi có thể cung cấp cho đầu vào lệnh để thực hiện thêm?Thực hiện lệnh với dấu nhắc CÓ Nhập

ví dụ:

executeCommand("pio app data-delete model"); 

output- 
[INFO] [App$] Data of the following app (default channel only) will be deleted. Are you sure? 
[INFO] [App$]  App Name: twittermodeling 
[INFO] [App$]  App ID: 14 
[INFO] [App$] Description: None 
Enter 'YES' to proceed: 

Vì vậy, tôi có thể cung cấp cho YES để thực hiện tiếp.

Cảm ơn

+1

Bạn có thể cho chúng tôi ví dụ về chuỗi đầu vào mà hành vi mong muốn không? – Tirath

+0

Nếu tôi nhận được nó ... bạn muốn sử dụng giá trị trả về bởi 'p.waitFor()' để nói một dấu nhắc 'Enter 'YES' để tiếp tục:'. – Tirath

Trả lời

4

Nếu bạn thực sự cần phải vượt qua "YES" để một lệnh unix, bạn có thể thêm tiền tố nó bằng cách echo YES |. echo YES | pio app data-delete model sẽ buộc xóa.

Trong ngữ cảnh runtime.exec() nghĩ rằng đường ống không thể được đánh giá đúng, hãy tham khảo this post để biết thêm thông tin.

Tuy nhiên, điều đầu tiên bạn nên làm là kiểm tra xem lệnh pio không có cờ "buộc", thường là -f, sẽ bỏ qua tương tác của người dùng.

+0

Cảm ơn bạn đã làm việc. –

+0

Bạn được chào đón! – Aaron

+0

Nó hoạt động tốt trên thiết bị đầu cuối nhưng khi tôi thực hiện lệnh này, hãy echo YES | pio app data-delete model trong java, nó không hoạt động –

1

Làm điều đó như thế này:

line = reader.readLine(); 

if (line.toLowerCase().equals("yes")){ 
    .... 
} 
else if (line.toLowerCase().equals("no")){ 
    .... 
} 
else { 
    ... 
} 
+0

Tôi muốn cung cấp Có hoặc Không làm đầu vào để nó có thể thực hiện thêm lệnh. Lệnh không được cung cấp CÓ hoặc KHÔNG –

+0

vui lòng cung cấp cho chúng tôi thêm một số thông tin trong câu hỏi của bạn – roeygol

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