我不認爲這是可能的,但我一直在使用:使用Runtime.getRuntime()。exec(command)時,用戶輸入到命令行;
Process p = Runtime.getRuntime().exec(command);
運行命令行命令,但現在我已經來了防空火炮的情況下命令我運行部分的方式,通過將要求一些用戶輸入,例如用戶名。
這不能通過正在執行的命令的參數來解決,有沒有什麼辦法可以將用戶名傳遞給同一個命令行實例並繼續?
---編輯---
我仍然無法得到這個工作。這些是在命令行上的步驟:
C:\someProgram.exe
Login:
Passowrd:
所以我需要通過登錄名和密碼,當它在運行時提示。該代碼我有一個不工作:
try {
String CMD = "\"C:\\someProgram\"";
Scanner scan = new Scanner(System.in);
ProcessBuilder builder = new ProcessBuilder(CMD);
builder.redirectErrorStream(true);
Process process = builder.start();
InputStream is = process.getInputStream();
BufferedReader reader = new BufferedReader (new InputStreamReader(is));
OutputStream out = process.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out));
String line;
try {
while (scan.hasNext()) {
String input = scan.nextLine();
if (input.toLowerCase().startsWith("login")) {
writer.write("myUsername");
} else if(input.toLowerCase().startsWith("password")){
writer.write("myPassword");
}
writer.flush();
line = reader.readLine();
while (line != null) {
System.out.println ("Stdout: " + line);
line = reader.readLine();
}
if (line == null) {
break;
}
}
process.waitFor();
}
finally {;
writer.close();
reader.close();
}
}
catch (Exception err) {
System.err.println("some message");
}
我用盡了諸如: writer.write( 「名爲myUsername \ n」);
任何幫助,我可以看到someProgram.exe被稱爲並在進程中運行,但它只是掛起。
你是否檢查過程是否有任何方法來做到這一點? –
是的,例如Process#getOutputStream():) – hoaz