Выполнение команды из Java и ожидание завершения команды
в моей Java-программе я создаю процесс, который выполняет команду для запуска пакетного файла следующим образом:
try {
File tempFile = new File("C:/Users/Public/temp.cmd");
tempFile.createNewFile();
tempFile.deleteOnExit();
setContents(tempFile, recipe.getText()); //Writes some user input to file
String cmd = "cmd /c start " + tempFile.getPath();
Process p = Runtime.getRuntime().exec(cmd);
int exitVal = p.waitFor();
refreshActionPerformed(evt);
} catch (InterruptedException ex) {
Logger.getLogger(mainFrame.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(mainFrame.class.getName()).log(Level.SEVERE, null, ex);
}
теперь, что я хотел бы, чтобы произошло, это команда
refreshActionPerformed(evt);
запускается только после завершения выполнения вызываемого пакетного файла. Но прямо сейчас он запускается сразу после открытия командной строки.
Как это исправить?
3 ответов
Я пытался найти ответ в другом месте. Чтобы сохранить начальный процесс открытым до завершения пакетного файла, вам нужно "/ wait"
Process p = Runtime.getRuntime().exec("cmd /C start /wait filepath.bat");
int exitVal = p.waitFor();
вызов "cmd / c start" заставляет cmd запускать другой экземпляр и немедленно выходить. Попробуйте вынуть команду "Пуск".
данный ответ является правильным. Я добавил, что окно, открытое кодом, должно быть закрыто вручную.
Process p = Runtime.getRuntime().exec("cmd /C start /wait filepath.bat");
int exitVal = p.waitFor();