2012-02-18 5 views
-1

Я создаю файл .bat в своем приложении Java (Runtime), затем запускаю .bat-файл и использую метод waitFor() для ожидания завершения .bat-файла, но процесс не ждет завершение .bat-файла.
Процесс Нет Подождите, чтобы завершить файл Bat

Код:

public boolean restoreDepot() { 
    try { 
    InputStreamReader _input = new 
     InputStreamReader(getClass().getResourceAsStream("/Depot/DBMakaseb.sql")); 
    BufferedReader _in = new BufferedReader(_input); 

    String _currentpath = (new File(".")).getCanonicalPath() + File.separator + "DBDepot.sql"; 
    BufferedWriter _out = new BufferedWriter(new FileWriter(_currentpath)); 

    while (_in.ready()) { 
     _out.write(_in.readLine()); 
     _out.newLine(); 
    } 

    _in.close(); 
    _out.close(); 


    String _comCur = "set cur=%cd%"; 
    String _comCD = "Cd /d %PROGRAMFILES%\\MySQL\\MySQL Server 5.5\\bin"; 
    String _comando = "mysql -u root -pm117988m < %cur%" + "\\DBDepot.sql"; 
    String _comExit = "exit"; 
    BufferedWriter _out1 = new BufferedWriter(new FileWriter("restore.bat")); 
    _out1.write(_comCur); 
    _out1.newLine(); 
    _out1.write(_comCD); 
    _out1.newLine(); 
    _out1.write(_comando); 
    _out1.newLine(); 
    _out1.write(_comExit); 
    _out1.close(); 


    Process _p = Runtime.getRuntime().exec("cmd /C start restore.bat"); 

    int _res = _p.waitFor(); 


    while (!(((new File(_currentpath)).delete()) && ((new File((new File(".")).getCanonicalPath() + File.separator + "restore.bat")).delete()))) { 
    } 

    if (_res != 0) { 
     return false; 
    } 

    return true; 
    } catch (Exception err) { 
    System.out.println(err); 
    } 

    return false; 

}


Пожалуйста, помогите мне!

+0

Ответ здесь: http://stackoverflow.com/questions/2448402/run-bat-file-in-java-and-wait-2 –

ответ

1

Это связано с использованием вами start.

Удалить start, только чтобы оставить

Process _p = Runtime.getRuntime().exec("cmd /C restore.bat"); 
Смежные вопросы