最も簡単な方法:を使用する必要がありますstart
。作業ディレクトリの設定も可能です。次の例を見てください。
Runtime r=Runtime.getRuntime();
r.exec("cmd.exe /c start compile.bat", //path to executable
null, // env vars, null means pass parent env
new File("C:\\blahblah")); // working directory
追加情報:別のコンソールでプロセスを開始したくない場合は(それが実行start
できます)、実行できますがr.exec("cmd.exe /c compile.bat");
、親コンソールのコンテキストで実行されるため、入力ストリームを待つか読み取る必要p.waitFor()
があります。そうしないと、サイレントに実行される可能性があります。不合格。これが実行され、コマンドからの出力が表示されます。
Process p=r.exec("cmd.exe /c compile.bat", //path to executable
null, // env vars, null means pass parent env
new File("C:\\blahblah"));
InputStream is=p.getInputStream();
BufferedReader br= new BufferedReader(new InputStreamReader(is));
String line=new String();
while ((line=br.readLine())!=null) System.out.println (line);
また、1.5以降、ProcessBuilderは(Java docから)プロセスを開始するための推奨される方法です。
java.lang.Process
プロセスを作成するメソッドは、ネイティブウィンドウプロセス、デーモンプロセス、MicrosoftWindowsのWin16/ DOSプロセス、シェルスクリプトなど、特定のネイティブプラットフォームの特別なプロセスではうまく機能しない場合があります。
デフォルトでは、作成されたサブプロセスには独自のターミナルまたはコンソールがありません。そのすべての標準I/O(つまり、stdin、stdout、stderr)操作は親プロセスにリダイレクトされ、getOutputStream()、getInputStream()、およびgetErrorStream()メソッドを使用して取得されたストリームを介してアクセスできます。親プロセスは、これらのストリームを使用して、サブプロセスに入力を供給し、サブプロセスから出力を取得します。一部のネイティブプラットフォームでは、標準の入力ストリームと出力ストリームに限られたバッファサイズしか提供されないため、サブプロセスの入力ストリームの書き込みまたは出力ストリームの読み取りに失敗すると、サブプロセスがブロックされたり、デッドロックが発生したりする可能性があります。
必要に応じて、ProcessBuilderクラスのメソッドを使用してサブプロセスI/Oをリダイレクトすることもできます。
Processオブジェクトへの参照がなくなると、サブプロセスは強制終了されませんが、サブプロセスは非同期で実行を継続します。
Processオブジェクトによって表されるプロセスが、Processオブジェクトを所有するJavaプロセスに対して非同期または同時に実行される必要はありません。
1.5以降、ProcessBuilder.start()がプロセスを作成するための推奨される方法です。
以来:JDK1.0