2

我在 Windows 7 机器上有一个播放应用程序,我想通过双击批处理文件来启动它。

此批处理文件启动服务。调用 play 应用程序以生产模式运行,等待 5 秒并打开具有指定 url 的浏览器。

因此我使用了以下脚本:

call net start service1
CALL "D:\play-1.2.5\play.bat" start --%%%%prod -Dprecompiled=true
TIMEOUT /T 4
call "C:\Program Files (x86)\Mozilla Firefox\firefox.exe" localhost:9000
exit

现在,当我启动批处理文件时,窗口打开并执行所有命令。可悲的是,Play 仍在将他的输出写入 cmd 并且窗口并没有消失。如果我手动关闭窗口,播放将停止执行。

如果我从 cmd 使用“播放开始”运行播放,播放将在后台开始,一切都很好。即使我关闭窗口,播放仍然运行。

当我用我的批处理文件启动应用程序时,我希望有这种行为。

谢谢

4

3 回答 3

0

我不知道 Play 是什么,所以我只能猜测 :) 但尝试使用不带call's 的批次,因为我认为它们没有必要,而且你永远不知道,可能会解决问题。

于 2012-10-15T16:00:03.147 回答
0

1)您会看到 Play 的输出,因为仅重定向 system.out 但将 system.err 写入同一控制台。

2)我也有这个问题,正在寻找解决方案。作为一种解决方法,您可以尝试使用一些 Java Wrapper 并安装您的 Play!应用程序作为 Windows 服务。

3)玩!应用程序可以通过 Ant 任务启动。我还没试过这个。

于 2014-03-17T23:26:43.457 回答
0

如果您使用的是类似 linux 的环境,我建议您使用 'nohup' 命令和最后一个 '&' 符号。然而,不幸的是,据我所知,在 Windows 上并没有直接等同于漂亮的“nohup”命令。所以,我能想到的是,您可以创建一个使用CreateProcess命令的小型 win api 应用程序,并在创建进程后为其提供所需的参数以隐藏命令行窗口。还有其他进程创建功能,例如WinExec,您可以使用它们来隐藏命令行。

于 2012-10-15T13:23:15.517 回答