2012-02-18 34 views
-1

我在我的Java应用程序(Runtime)中创建一个.bat文件,然后运行.bat文件并使用waitFor()方法来等待终止.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 – 2012-02-18 18:43:55

回答

1

它与您使用start有关。

删除start,只留下

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