我目前正在從事一個項目,其中客戶端從服務器接收shell/console命令,並且必須執行它們。如何執行一系列相關的控制檯命令?
如何讓Java從shell或命令提示符中運行這些命令?我希望能夠忽略平臺類型 - 而不必指定shell或命令提示符 - 但如果我不能,那就沒問題。
我必須能夠發送相關命令的序列,而不只是一個命令。這意味着shell/prompt不能在命令之間退出或關閉。
我的當前代碼如下所示,允許執行一系列程序,但這些命令必須以某種方式傳送到shell /命令提示符中,從中必須讀取輸出。
ArrayList<String> comDat = new ArrayList<>();
while(true) {
String input = con.recv();
System.out.println("> " + input);
if(!input.equals("EOF")) comDat.add(input); else {
String[] s = new String[comDat.size()];
for(int i = 0; i < comDat.size(); i++) s[i] = comDat.get(i);
System.out.println("---Command sequence executing---");
Process p = Runtime.getRuntime().exec(s);
p.waitFor();
System.out.println("---ErrorStream output---"); String line = "";
BufferedReader errStream = new BufferedReader(new InputStreamReader(p.getErrorStream()));
while((line = errStream.readLine()) != null) System.out.println("< " + line);
System.out.println("\n---OutputStream output---"); line = "";
BufferedReader outStream = new BufferedReader(new InputStreamReader(p.getInputStream()));
while((line = errStream.readLine()) != null) System.out.println("< " + line);
}
Thread.sleep(200);
}
感謝您的幫助!
「目錄」是不是一個可執行的命令,它是命令處理程序的一部分,你需要通過@MadProgrammer我已經意識到「CMD」 – MadProgrammer
執行它是 - 仍然不知道該怎麼做,在這種一種通用於平臺的方式。 – Zyerah
對不起,檢查出一些答案,嘗試看看[這](http://stackoverflow.com/questions/4031390/executing-dos-commands-from-java) – MadProgrammer