在Web应用程序上启动.bat

时间:2012-07-18 10:14:43

标签: java jsf batch-file

我正在使用JSF应用程序,单击.bat按钮时我想要启动Command,此脚本位于我项目的webcontent目录中。 行动的代码是:

public String genererRapportTable() {
  try {
    ServletContext ctx = (ServletContext) FacesContext
      .getCurrentInstance().getExternalContext().getContext();
    String realPath = ctx.getRealPath("/");
    String[] command = { "cmd.exe", "/C", "start", realPath + "Tools\\cmd.bat" };
    Runtime.getRuntime().exec(command);
  } catch (IOException e) {
    e.printStackTrace();
  }
  return null;
}

路径构造正确但脚本未启动!

调试屏幕:

enter image description here

这是我得到的输出:

enter image description here

因此路径正确但脚本未启动。当我将.bat放在c:\Tools上并使用此路径"C:\\Tools\\cmd.bat"时,它可以正常工作。 有什么问题?

2 个答案:

答案 0 :(得分:1)

您可以发布批处理文件的内容吗? 我注意到实际路径用作新命令提示符窗口的标题。这是误用start命令的典型行为(第一个参数不是可执行文件的路径,而是新窗口的title。不要问我,我不知道为什么...... ) 您是否在批处理文件中使用start

答案 1 :(得分:1)

如果您使用 start 来运行批处理,则需要将引用的标题作为第一个参数,因为您的路径包含空格并且也会被引用。
start命令始终将第一个引用的参数用作标题。

start "myTitle" cmd.exe /c myBat.bat

这样的事情应该有效 String[] command = { "cmd.exe", "/C", "start", "\"myTitle\" \""+realPath + "Tools\\cmd.bat\""};

您还应该将cmd.bat重命名为更好的名称,以便它不会与cmd.exe冲突。