読者です 読者をやめる 読者になる 読者になる

「Java」 ProcessBuilder でバッチファイルを実行する

Web にたくさん情報ありますが、ProcessBuilder でバッチファイルを実行するサンプル。
ちょっとメモとして残しておきます。いろんな情報見る限り不完全な感じもしますが、とりあえずこんなところで。

■ ProcessBuilderTest.java

package process.builder;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class ProcessBuilderTest {
  public static void main(String[] args) {
    ProcessBuilderTest pbs = new ProcessBuilderTest();

    ProcessBuilder pb = new ProcessBuilder("C:\\workspace44_2\\ZZZ\\cmd\\test.bat");
    pb.redirectErrorStream(true);
    try {
      Process p = pb.start();
      pbs.print(p.getInputStream());
      p.waitFor();
    } catch (IOException e) {
      e.printStackTrace();
    } catch (InterruptedException e) {
      e.printStackTrace();
    }
  }

  private void print(InputStream is) throws IOException {
    try (BufferedReader br = new BufferedReader(new InputStreamReader(is));) {
      String line;
      while ((line = br.readLine()) != null) {
        System.out.println(line);
      }
    }
  }
}

■ test.bat

@echo off
echo --- echo ---
echo test
echo ------------

echo; 
sleep 10

echo --- dir ---
dir hoge
echo ------------


[ 環境情報 ]
Windows 7 SP1
Java SE 8 Update 25