无法从JSP启动.bat文件

时间:2010-04-15 10:00:34

标签: java jsp batch-file

我有一个批处理文件runthis.bat

目录> dir.txt

如果我双击它,将创建一个名为dir.txt的文本文件

现在我必须使用JSP运行这个批处理文件。

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

我在网页上输出了SUCCESS,但是这个批处理文件没有运行。

可能是什么问题?

3 个答案:

答案 0 :(得分:4)

首先,JSP是错误的地方。在真正的Java类中完成。从Servlet开始。有一个带有提交给servlet的按钮的表单。将此代码放在doPost()方法中。让servlet将结果放入请求范围并将请求转发给JSP。让JSP显示结果。

其次,了解this articleRuntime#exec()的陷阱。您的问题是您没有检查结果,也没有检查错误流(因此永远不知道程序是否成功执行),并且您希望它以某种方式与您的编码同步运行(而它实际上是在一个单独的线程中运行/处理)。你基本上是在“发射并忘记”,代码基本上不会以任何方式跟踪程序的执行/终止。

此问题与JSP无关。在普通的Java类中执行此操作时,您将遇到完全相同的问题。

答案 1 :(得分:2)

尝试执行:

cmd /c your.bat

那是:

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

编辑:

我建议你小心路径中的空格。如果你逃脱它们或用引号(“”)包裹整个路径会很棒。

答案 2 :(得分:1)

我猜你应该在路径中使用退格:

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