gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 23:35:23 25 4
gpt4 key购买 nike

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

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

如果我在 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。这允许您指定起始目录、一个健全的环境,尤其是一个不被您的操作系统解释的命令名称和参数。

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

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

关于java - 通过java运行批处理文件(.bat)所需的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25220151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com