2013-03-31 27 views
2
try {        
try { 
    String[] command = {"cmd.exe", "/C", "Start", "D:\\test.bat"}; 
     Runtime r = Runtime.getRuntime(); 
     Process p = r.exec(command); 
     p.waitFor(); 

    } catch (Exception e) { 
     e.printStackTrace(); 
     JOptionPane.showMessageDialog(this, "Error" +"Execution!","Error",JOptionPane.ERROR_MESSAGE); 
     } 
    } catch (IOException ex) { 
     Logger.getLogger(DBBackUp.class.getName()).log(Level.SEVERE, null, ex); 
    } 

當我運行此代碼時,我只獲得了命令promt。 .bat文件沒有運行。 如何使用此代碼執行批處理文件?使用java程序運行批處理文件

預先感謝

+0

你可以請分享你的test.bat和命令提示符響應。嘗試將echo消息添加爲批處理文件中的第一條語句,以查看它是否正在運行。 – Dinakar

+0

如果bat文件是短暫運行的腳本,那麼您可能無法看到窗口。 –

回答

1

讓你的 「test.bat的」 是這樣的:

try 
{ 
Runtime r = Runtime.getRuntime(); 
Process p = r.exec("rundll32 url.dll,FileProtocolHandler " + "D:\\test.bat"); 
p.waitFor(); 
}catch(Exception ex){ex.printStackTrace();} 
1

你可以試一下:

dir 
pause 

,那麼你可以按如下執行該批處理文件像這樣:

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 


public class BatchExecuteService { 

    public static void main(String[] args) { 
     BatchExecuteService batchExecuteService = new BatchExecuteService(); 
     batchExecuteService.run(); 
    } 

    public void run() { 
     try { 
      String cmds[] = {"D:\\test.bat"}; 
      Runtime runtime = Runtime.getRuntime(); 
      Process process = runtime.exec(cmds); 
      process.getOutputStream().close(); 
      InputStream inputStream = process.getInputStream(); 
      InputStreamReader inputstreamreader = new InputStreamReader(inputStream); 
      BufferedReader bufferedrReader = new BufferedReader(inputstreamreader); 
      String strLine = ""; 
      while ((strLine = bufferedrReader.readLine()) != null) { 
       System.out.println(strLine); 
      } 
     } catch (IOException ioException) { 
      ioException.printStackTrace(); 
     } 
    } 
}