S_a_k_Uの日記みたいなDB

~サクゥーと呼ばないで~

Windows(MS-DOS)バッチファイルの実行

Javaからバッチファイルでコマンドを実行する場合、

    String command = "hoge.bat";
    Process process = runtime.exec(command);
    int exitvalue = process.waitFor();

みたいな感じで書いたら、waitForで待っても全然返ってこん。
hoge.batは、環境変数を設定する"SET TEMP_DIR=c:\temp"みたいなコマンドだけなのに。
と思ったら、最初に"echo off"を書いたらちゃんと返ってきた。
んで、HiRDBのPDSQLのコマンドを追加したら、今度はそこで止まっちゃってるっぽい。
そうきたら、と"@echo off"にしたらちゃんと返ってきた。
標準出力に書けないような状態ってことか???
Processオブジェクトの標準出力のgetInputStreamを読んであげんと、実行したサブプロセス側が終了できないから、waitForで待ってしまうってな動作なんかな?


Wikipedia > バッチファイル > 2 @echo off



試行錯誤中に、"CMD /C START"ってなコマンドで、バッチファイルを起動すると返ってきた。
けど、今度はバッチファイルからの戻り値exitvalueが取得できんかったり。

    String command = "CMD /C START hoge.bat";
    Process process = runtime.exec(command);
    int exitvalue = process.waitFor();