Выполните bat-файл в Java и ожидайте

Вы думали бы, что запуск 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 минуты. Я пытался удалить запуск, но напрасно. Я попробовал много изменений, но это не получило меня нигде. Какие-либо идеи о том, как сделать эту простую задачу?

5
задан Savvas Dalkitsis 12 March 2010 в 16:27
поделиться

2 ответа

Вы не должны игнорировать возвращаемое значение .exec () . Он дает вам объект Process , к которому вы можете waitFor () , например:

final Process process = Runtime.getRuntime().exec("blahblahblah");
final int exitVal = process.waitFor();
// if exitVal == 0, the command succeeded
14
ответ дан 18 December 2019 в 07:29
поделиться

вам необходимо использовать waitFor для возврата вызова процесса exec .

7
ответ дан 18 December 2019 в 07:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: