Search code examples
javawindowsbatch-filewmictasklist

Start a Java application using Bat file if not already started


I want to check using a bat file if a Java program is already running. If its not running then start it using start javaw.

I have tried WMIC and I am only successful so far to get the PID.

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

But how to write an if else condition in the bat file to start?

I tried using tasklist and find

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

But for all the java applications myapp.exe will be java.exe.

Please help...

P.S: There are options for this to be done via the Java program itself, but my specific situation asks for a bat file solution.


Solution

  • You can use jcmd.exe to see the main class of all the java processes running. The IF-ELSE syntax of the batch file is explained in the following thread

    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 
    ) 
    

    This link would help with the IF construct - http://ss64.com/nt/if.html