Java を使用して CMD ウィンドウでプロセスを開始したいのですが、それを行う最も簡単な方法は
Runtime.getRuntime().exec("cmd /c start program.exe")
問題は、プロセスから入力を取得できないことです。プロセスから出力を取得し、別の CMD ウィンドウで実行するにはどうすればよいですか?
プロセスの出力プロセスを印刷したい場合は、これを使用してください
Process process= Runtime.getRuntime().exec("cmd /c start program.exe");
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = null;
while ((line = br.readLine()) != null) {
line = br.readLine();
System.out.println(line);
}
これにより、各出力プロセスはcmd出力とまったく同じになります。
2つのcmdを処理したい場合は、異なるexecで2つのプロセスを作成できます。
Process process1 = Runtime.getRuntime().exec("cmd /c start program1.exe");
Process process2 = Runtime.getRuntime().exec("cmd /c start program2.exe");
これを同じスレッドで実行したい場合は、スレッドに関するJavaの本を読んでください。スレッドと同時に実行できます。
あなたの問題は、呼び出しstart
とは無関係の完全に新しいプロセスを起動することを目的とする別のコマンドであることです。次に実行されるものは、オリジナルに接続されておらず、Java プログラムからアクセスすることはできません。cmd
start
start
cmd
サブプロセスの in/out/err ストリームにアクセスする必要がある場合は、使用しないでくださいstart
。