実務でJavaプログラムからバッチファイルを実行する処理が実装されていたので備忘録として簡単なサンプルを残しておく。
今回はA5M2.exeを起動するバッチファイルをJavaから起動する処理を実装した。
なぜA5M2なのは特に理由はない。
実装する処理の流れは以下の通り。
①バッチファイルを起動するJavaプログラムを実行
②バッチファイルからA5M2.exeを起動
Javaプログラムの実装
Javaのソースは下記の通り
public class Sample {
public static void main(String[] args) {
try {
ProcessBuilder pb = new ProcessBuilder("C:\\Users\\User\\Desktop\\hello.bat");
Process process = pb.start();
int result = process.waitFor();
System.out.println("戻り値:" + result);
} catch(Exception e) {
System.out.println(e.toString());
System.out.println("プロセス起動失敗");
}
}
}
ProcessBuilderはプロセスの起動などに使用することができるクラスである。
インスタンスを宣言するときに引数で実行したいコマンドを文字列でセットする。
インスタンス生成後にstartメソッドでコマンドを実行する。
戻り値が返ってくるのでProcessクラスの変数に代入する。
process.waitForメソッドは起動したプロセスが終了するまでの間、現在のスレッドを待機させることができるメソッド。
戻り値としてプロセスの終了コードが返ってくる。
0の場合は正常に終了している。
バッチファイルの実装
A5M2を起動するだけなので、startでディレクトリを指定するだけで起動できる。
start "" C:\任意のディレクトリ\A5M2.exe
実行してみる
実際にJavaプログラムを実行してみる。
実行後、A5M2を起動することに成功。
eclipseのコンソールでも終了コード0が返ってきていることがわかる。
今回は非常に簡単だが、うまく活用すればいろんなことを効率化できそうなのでいろいろやってみると良いかもしれない。