在Web应用程序上启动.bat
问题描述:
我在JSF应用程序中,我有一个.bat
,我想在点击Command
按钮时启动,此脚本位于我的项目的webcontent目录中。 动作的代码是:在Web应用程序上启动.bat
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;
}
的路径是否正确构建,但剧本没有启动!
调试屏幕:
这是我得到的输出:
所以路径是正确的,但剧本没有启动。当我把.bat
放在c:\Tools
上时,我使用这个路径"C:\\Tools\\cmd.bat"
它可以工作。 问题是什么?
答
你能发布的批处理文件的内容是什么? 我注意到实际路径被用作新的命令提示符窗口的标题。这是start
指令的误用的典型行为(第一个参数是不是可执行文件的路径,但title
新窗口。不要问我,我不知道为什么...) 你在使用start
批处理文件?
答
如果您使用开始运行您的批处理,您需要将带引号的标题作为第一个参数,因为您的路径包含空格并且也将被引用。
启动命令始终使用第一个带引号的参数作为标题。
start "myTitle" cmd.exe /c myBat.bat
像这样的东西应该工作String[] command = { "cmd.exe", "/C", "start", "\"myTitle\" \""+realPath + "Tools\\cmd.bat\""
};
还应该重命名cmd.bat到一个更好的名字,所以不能用cmd.exe的碰撞。
是的是的,我使用过的启动不跑,我只是试着运行测试! – Potinos 2012-07-18 11:06:08
的java -Xmx512m -jar schemaSpy_5.0.0.jar -t orathin -db nrefurg -host colline2 -port 1533 -s GA_ADM -u ga_adm -p ga_adm -o DOC -dp ojdbc-14.jar -i DOC -GV“Graphviz_2。 28“-hq – Potinos 2012-07-18 11:08:04
就像@jeb评论的那样,你需要添加标题参数(第一个参数)。在命令提示符下检查'start /?'并验证语法。 – Cascader 2012-07-18 11:36:04