2012-02-18 2 views
-1

내 Java 응용 프로그램 (런타임)에서 .bat 파일을 만든 다음 .bat 파일을 실행하고 .bat 파일 종료를 기다리는 waitFor() 메서드를 사용하지만 프로세스 대기 없음 .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");