[英]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.