2011-10-23 243 views
1

我只想在win7中使用java代碼運行批處理文件。我可以用代碼運行.exe文件,但是你知道它不適用於批處理。哪裏有問題?你甚至知道cmd.exe不會以該命令開始。但我可以運行其他的exe文件,我試過一些。代碼是這樣的(嘗試和捕捉是):他們都沒有工作!由java運行批處理文件

Runtime.getRuntime().exec("cmd.exe /c demo.bat"); 
Runtime.getRuntime().exec("demo.bat"); 

我試圖做的工作,我寫了下面的代碼。它retuened

 java.lang.IllegalThreadStateException:process has not exited 
     at java.lang.ProcessImpl.exitValue(Native Method) 
     at Test.Asli.main(Asli.java:38) 

這是代碼:

  try{ 
       Runtime rt = Runtime.getRuntime(); 
       Process proc= rt.exec("C:\\Windows\\System32\\cmd.exe"); 
       int b = proc.exitValue(); 
       // int exitVal = proc.exitValue(); 
       //System.out.println("Process exitValue: " + exitVal);} 
       } 
       catch (Exception e) { 
       // TODO: handle exception 
        e.printStackTrace(); 
      } 
+1

那真的是你的代碼?它無法編譯。 – Mat

+0

我確定這不是確切的代碼(它有3個),這是如何失敗的?一個錯誤消息,一個例外,....你對'exec執行的'Process'做了什麼? '? –

+0

是的,問題出在哪裏?你得到了什麼?異常?什麼是堆棧跟蹤? –

回答

5

嘗試以下操作:

String[] cmd = {"cmd.exe", "/c", "demo.bat"); 
Runtime.getRuntime().exec(cmd); 

我總是喜歡拆分命令和參數我自己。否則,它是通過分裂空間來完成的,這可能不是你想要的。

+0

即使這樣做也沒有任何改變。沒有錯誤沒有例外沒有報警也沒有行動!它調試並結束。 什麼都沒發生 –

1

試試這個:

Runtime.getRuntime().exec("cmd.exe /c start demo.bat"); 
0

使用此:

try { 
Process p = Runtime.getRuntime().exec("C:PATH/TO/FILE/yourbatchfile.bat"); 
} catch(Exception e) { 
    e.printStackTrace(); 
} 

它甚至掩蓋惱人的提示窗口(如果你想)