これが可能だとは思いませんが、私は以下を使用しています:
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 が呼び出されて実行されていることがわかりますが、ハングするだけです。