Вы думали бы, что запуск bat-файла от Java будет легкой задачей, но нет... У меня есть bat-файл, который делает некоторые команды sql для цикла значений, считанных из текстового файла. Это более или менее похоже на это:
FOR /F %%x in (%CD%\listOfThings.txt) do sqlcmd -Slocalhost\MSSQL %1 %2 -d %3 -i %CD%\SQLScripts\\%%x
exit
Не волнуйтесь о специфических особенностях, они не важны. То, что я хочу, должно просто выполнить этот bat-файл из Java и иметь его, ожидают, пока выполнение не закончено. По-видимому, это не легко. Что я имею, до сих пор это:
Runtime.getRuntime().exec("cmd /K start SQLScriptsToRun.bat"
+" -U"+getUser()
+" -P"+getPass()
+" " + projectName);
return true;
Проблема состоит в том, что должностное лицо () метод сразу возвращается. Bat-файл выполняет для хорошего 2-3 минуты. Я пытался удалить запуск, но напрасно. Я попробовал много изменений, но это не получило меня нигде. Какие-либо идеи о том, как сделать эту простую задачу?
Вы не должны игнорировать возвращаемое значение .exec ()
. Он дает вам объект Process
, к которому вы можете waitFor ()
, например:
final Process process = Runtime.getRuntime().exec("blahblahblah");
final int exitVal = process.waitFor();
// if exitVal == 0, the command succeeded
вам необходимо использовать waitFor
для возврата вызова процесса exec
.