java - 使用 Bat 文件启动 Java 应用程序(如果尚未启动)

标签 java windows batch-file wmic tasklist

我想使用bat 文件检查Java 程序是否已在运行。如果它没有运行,则使用 start javaw 启动它。

我已经尝试过WMIC,但到目前为止我只成功获取了PID。

WMIC process where "CommandLine like '%MyServer.jar%' and Name like '%javaw%'" get ProcessId

但是如何在bat文件中编写if else条件来启动呢?

我尝试使用任务列表并找到

tasklist /FI "IMAGENAME eq myapp.exe" 2>NUL | find /I /N "myapp.exe">NUL
if "%ERRORLEVEL%"=="0" echo Programm is running

但对于所有 Java 应用程序,myapp.exe 都将是 java.exe

请帮忙...

P.S:可以选择通过 Java 程序本身来完成此操作,但我的具体情况需要 bat 文件解决方案。

最佳答案

您可以使用jcmd.exe来查看正在运行的所有java进程的主类。批处理文件的 IF-ELSE 语法在以下线程中解释

How to use if - else structure in a batch file?

jcmd | find /I /N "sun.tools.jconsole.JConsole"


IF "%ERRORLEVEL%" GTR "0" (
    jconsole.exe
)

IF %ERRORLEVEL% EQU 0 (
    echo Programm is running 
) 

此链接将有助于 IF 构造 - http://ss64.com/nt/if.html

关于java - 使用 Bat 文件启动 Java 应用程序(如果尚未启动),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34348758/

相关文章:

windows - 使用控制台版本的 signtool.exe 使用 PKCS #7 SPC 文件签署可执行文件

windows - 安装包后找不到 Git Bash 命令

powershell - 将字符串参数发送到 Start-Job 脚本 block

java - Java 中的慢速多线程 - Air Percussion 项目

java - 解析文件时出错——运行时错误

java - 为jTable的每一行分配一个隐藏值

java - future 的功能还需要 AssetManager 吗?

Windows 临界区 - 如何完全禁用旋转

windows - 如何在 Windows 命令提示符下对变量进行字符串替换?

c++ - 从对其他进程(如 cmds)可见的 C++ 代码设置当前用户环境变量