3

ファイルに4 行ありbatますが、cmd が閉じる前にスレッドが続きます。

これが私のコードです:

rt = Runtime.getRuntime();
proc = rt.exec("cmd /c start C:\\temp\\test.bat");
if(proc.waitFor() == 0) {
    return "did it";
} else {
    return "nooope";
} 

did itcmdが閉じる前に常に取得します。ここに私のバッチファイルがあります:

@ECHO off
taskkill /IM "Process.exe" /F
cd "C:\Program Files\ProcessFolder"
START /WAIT Process.exe
START otherProcess.exe
EXIT

助けはありますか?

4

1 に答える 1

4

問題は、バッチ ファイルを実行する新しいstartシェルを起動する - を使用していることです。その後、元のシェルが閉じるため、プロセスが終了し、Java プログラムが続行されます。

を削除するstartと、バッチファイルが終了するのを待つという点で機能するはずです。ただし、起動すると、バッチ ファイル内で同じ問題が再び発生しますotherProcess

を使用しないかstart常にstart /waitバッチ ファイル内で使用してください。

ただし、Java コード内で使用するstart /waitと、実験でわかる限り、バッチ ファイルの実行の最後にコマンド プロンプトが表示されます。

于 2012-10-28T09:46:28.297 に答える