2010-04-15 65 views
1

開始.bat文件我有一個批處理文件runthis.bat無法從JSP

DIR> DIR.TXT

如果我雙擊此,正與名稱目錄創建一個文本文件.txt

現在我必須使用JSP來運行這個批處理文件。

<% 
Runtime run =Runtime.getRuntime(); 
run.exec("C:/Program Files/Apache Software Foundation/Tomcat 5.5/webapps/try/runthis.bat"); 
out.println("SUCCESS"); 
%> 

我在網頁上獲得輸出成功,但此批處理文件未運行。

什麼可能是問題?

回答

4

首先,JSP是錯誤的地方。在一個真正的Java類中進行。從Servlet開始。有一個提交給servlet的按鈕。將此代碼放在doPost()方法中。讓servlet將結果放入請求範圍並將請求轉發給JSP。讓JSP顯示結果。

二,瞭解Runtime#exec()的陷阱this article。你的問題是你沒有檢查結果,也沒有錯誤流(因此永遠不知道程序是否成功執行),並且你期望它以某種方式與你的代碼同步運行(雖然它實際上運行在一個單獨的線程/處理)。你基本上是在做一個「火併忘記」,代碼基本上不以任何方式跟蹤程序的執行/終止。

此問題與JSP無關。在普通Java類中這樣做時,您將面臨完全相同的問題。

1

我想你應該在路徑中使用退格鍵:

run.exec("C:\\Program Files\\Apache Software Foundation\\Tomcat 5.5\\webapps\\try\\runthis.bat"); 
2

嘗試執行:

cmd /c your.bat 

即:

run.exec("cmd /c C:/Program Files/Apache Software Foundation/Tomcat 5.5/webapps/try/runthis.bat"); 

編輯:

,我會建議你小心空格在路徑內。如果你逃脫了他們,或者用引號(「」)包裹了整個路徑,那將是非常好的。

+0

如果您擔心路徑中的空間,使用Runtime.exec(String [])而不是Runtime.exec(String)可能會更安全。 – Armand 2010-04-15 11:19:44