我在Windows 7机器上有一个播放应用程序,我想通过双击批处理文件来启动它。
此批处理文件启动服务。调用播放应用程序以生产模式运行,等待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开始玩“play start”,播放将在后台开始,一切都很好。即使我关闭窗口,播放仍然会运行。
当我使用批处理文件启动应用程序时,我想要完全出现这种情况。
由于
答案 0 :(得分:0)
如果您使用类似Linux的环境,我建议您使用'nohup'命令和'&'签到最后。但是,据我所知,不幸的是,在Windows上没有直接相当于漂亮的'nohup'命令。所以,我能想到的是,你可以使用CreateProcess命令创建一个小的win api应用程序,并在创建进程后立即为其提供隐藏命令行窗口所需的参数。还有其他进程创建函数,例如WinExec,可用于隐藏命令行。
答案 1 :(得分:0)
我不知道Play是什么,所以我只能猜一猜:)但是尝试使用没有call
的批处理,因为我认为它们不是必需的,你永远不知道,可能解决问题。
答案 2 :(得分:0)
1)您看到Play的输出,因为只重定向system.out但将system.err写入同一个控制台。
2)我也有这个问题并寻找解决方案。作为一种解决方法,您可以尝试使用一些Java Wrapper并安装您的Play!应用程序作为Windows服务。
3)玩!应用程序可以通过Ant任务启动。我还没试过这个。