我正在创建一个启动脚本来启动一个需要特定Java版本的游戏启动器。它目前看起来像这样:
@ECHO OFF
echo Enabling Java 7...
SET JAVA_HOME=C:\Program Files\Java\jre7
echo Active Java version location: %JAVA_HOME%
echo Starting ATLauncher...
start /wait ATLauncher.exe
echo Launcher started!
它只是将Java版本设置为Java 7(将JAVA_HOME
环境变量更改为Java 7 jre的路径)并启动游戏启动器(ATLauncher.exe
)并等待它完成。这就是我想要的,除了一件事:进程ATLauncher.exe
只是一个“启动器”,它启动一个调试控制台和一个Java应用程序,它提示用户选择要播放的内容,然后启动所选的应用
这带来两个问题:
1:所有应用程序在ATLauncher.exe
进程之后启动都是Java程序,因此它们的进程名称只是javaw.exe
,因此很难识别它们。
2:批处理文件在ATLauncher.exe
进程停止时关闭(这是我所期望的),但我希望它一直运行,直到最后一个已启动的Java进程终止,然后再运行一些命令,然后停止。
这是我想要实现的“流程”:
JAVA_HOME
变量已更改。ATLauncher.exe
开始。ATLauncher.exe
启动两个javaw.exe
流程。ATLauncher.exe
停止。javaw.exe
进程启动了第3个javaw.exe
进程。javaw.exe
进程停止。javaw.exe
最终停止,或者“流程”再次从第6步开始。我希望这很清楚!告诉我是否必须更清楚地解释一下!
谢谢!
答案 0 :(得分:1)
试试这个:
:loop
rem wait 4 sec
ping -n 5 localhost >nul
tasklist /fi "IMAGENAME EQ javaw.exe" /fi "STATUS EQ RUNNING" | find /i "javaw.exe" > nul && goto:loop
rem more commands here
答案 1 :(得分:0)
我可以建议您解决一个识别java进程的问题
在启动Java应用程序时,使用-D选项提供JVM参数
这样的事情
java -Dappname =“appname”classname
稍后在通过ps或其他命令搜索应用程序时,在appname上放置一个grep。 希望这会有所帮助。