繁体   English   中英

通过Java运行批处理文件(.bat)所需的解决方案

[英]Solution needed to run batch file (.bat) through java

我有一个servlet,试图在其中运行一个批处理文件run.bat

批处理文件用于打开放置在C:/Test/run.bat等文件夹中的文本文件(如sample.txt

如果我在Eclipse中运行该程序,则该程序运行良好,即文本文件正在打开。 当我将此应用程序部署到位于位置C:\\Program Files\\Apache Software Foundation\\Tomcat 7.0\\webapps tomcat wepapps文件夹中时,文本文件也会打开,并使用Tomcat作为服务,即安装了Tomcat,并且通过以下方式访问该应用程序URL localhost:8080/testbatfile/StartTest

testbatfile是项目名称, StartTest是servlet。

但是,如果我尝试通过浏览器运行该应用程序,则无法正常运行。 该程序无法运行批处理文件。

但是,如果我们在Tomcat中部署应用程序并运行Tomcat的startup.bat ,那么一切也都可以正常工作。

请让我知道是否有人愿意接受这一挑战。

servlet的内容如下:

protected void doGet(HttpServletRequest request, HttpServletResponse response)

throws   ServletException, IOException {
    Runtime runtime = Runtime.getRuntime();
    Process p1 = runtime.exec("C:/CGT_TO_SAS/run.bat");

    InputStream is = p1.getInputStream();
    int i = 0;

    while( (i = is.read() ) != -1)
    {
        System.out.print((char)i);
    }
}

run.bat的内容仅是:

"C:\Test\sample.txt"

您的批处理文件内容看起来不完整,这不是有效的命令。 以及为什么您需要一个bat文件来对sample.txt进行处理?

无论如何,您应该使用exec(String [] cmdarray,String [] envp,File dir)ProcessBuilder,而不要使用基于纯字符串的exec。 这使您可以指定开始目录,合理的环境,尤其是OS不会解释的命令名称和参数。

runtime.exec(new String[]{"C:/CGT_TO_SAS/run.bat"}, null, new File("C:/CGT_TO_SAS"));

我怀疑您遇到的问题是Tomcat安装路径中的空白。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM