批处理 - 如何等待具有特定名称的进程开始和完成?
Batch - How to wait for process with specific name so start and finish?
我正在创建启动脚本来启动需要特定 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
只是一个 "starter",它启动一个调试控制台和一个 Java 应用程序,它提示用户 select 播放,然后启动 selected 应用程序。
这带来了两个问题:
1:在ATLauncher.exe
进程之后启动的应用程序都是Java程序,所以进程名都是javaw.exe
,很难识别。
2:批处理文件在 ATLauncher.exe
进程停止时关闭(这是我所期望的),但我希望它 运行 直到最后一个启动的 Java 进程被终止,并且然后运行一些命令,然后停止。
下面是我要实现的"flow":
- 脚本已启动。
JAVA_HOME
变量已更改。
- 进程
ATLauncher.exe
开始。
- 进程
ATLauncher.exe
启动两个 javaw.exe
进程。
- 进程
ATLauncher.exe
停止。
- 其中一个
javaw.exe
进程启动了第三个 javaw.exe
进程。
- 第 3 个
javaw.exe
进程停止。
- 第一和第二
javaw.exe
最终停止,或者 "flow" 再次从第 6 步开始。
- 脚本执行更多命令并停止。
我希望这已经够清楚了!告诉我是否需要解释得更清楚一些!
谢谢!
我可以建议解决您识别 java 进程的问题之一
在启动您的 java 应用程序时提供带有 -D 选项的 JVM 参数
像这样的
java -Dappname="appname" 类名
稍后在通过 ps 或其他一些命令搜索您的应用程序时,在 appname 上放置一个 grep。
希望这个帮助ps。
试试这个:
: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
我正在创建启动脚本来启动需要特定 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
只是一个 "starter",它启动一个调试控制台和一个 Java 应用程序,它提示用户 select 播放,然后启动 selected 应用程序。
这带来了两个问题:
1:在ATLauncher.exe
进程之后启动的应用程序都是Java程序,所以进程名都是javaw.exe
,很难识别。
2:批处理文件在 ATLauncher.exe
进程停止时关闭(这是我所期望的),但我希望它 运行 直到最后一个启动的 Java 进程被终止,并且然后运行一些命令,然后停止。
下面是我要实现的"flow":
- 脚本已启动。
JAVA_HOME
变量已更改。- 进程
ATLauncher.exe
开始。 - 进程
ATLauncher.exe
启动两个javaw.exe
进程。 - 进程
ATLauncher.exe
停止。 - 其中一个
javaw.exe
进程启动了第三个javaw.exe
进程。 - 第 3 个
javaw.exe
进程停止。 - 第一和第二
javaw.exe
最终停止,或者 "flow" 再次从第 6 步开始。 - 脚本执行更多命令并停止。
我希望这已经够清楚了!告诉我是否需要解释得更清楚一些!
谢谢!
我可以建议解决您识别 java 进程的问题之一
在启动您的 java 应用程序时提供带有 -D 选项的 JVM 参数
像这样的
java -Dappname="appname" 类名
稍后在通过 ps 或其他一些命令搜索您的应用程序时,在 appname 上放置一个 grep。
希望这个帮助ps。
试试这个:
: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