【问题标题】:unable to start .bat file from JSP无法从 JSP 启动 .bat 文件
【发布时间】:2010-04-15 10:00:33
【问题描述】:

我有一个批处理文件 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,但此批处理文件没有运行。

可能是什么问题?

【问题讨论】:

    标签: java jsp batch-file


    【解决方案1】:

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

    其次,了解Runtime#exec()this article 中的陷阱。您的问题是您没有检查结果或错误流(因此永远不知道程序是否成功执行)并且您期望它以某种方式与您的编码同步运行(虽然它实际上在单独的线程中运行/过程)。你基本上是在做“一劳永逸”,代码基本上没有以任何方式跟踪程序的执行/终止。

    顺便说一下,这个问题与 JSP 无关。在普通的 Java 类中这样做会遇到完全相同的问题。

    【讨论】:

      【解决方案2】:

      尝试执行:

      cmd /c your.bat
      

      即:

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

      编辑:

      我建议您注意路径中的空格。如果您将它们转义或用引号 ("") 包裹整个路径,那就太好了。

      【讨论】:

      • 如果您担心路径中的空格,使用 Runtime.exec(String[]) 而不是 Runtime.exec(String) 可能更安全。
      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2023-01-07
        • 2023-04-10
        • 2018-09-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多