Why won't cmd exit after execution of batch file?

I have tried:

"C:\Program Files (x86)\Java\jre6\bin\javaw.exe" -Xmx1024M -Xms1024M -jar Jilko.jar

and

@echo off
"C:\Program Files (x86)\Java\jre6\bin\javaw.exe" -Xmx1024M -Xms1024M -jar Jilko.jar
exit
link|improve this question
feedback

6 Answers

If the Java app does not terminate (e.g. you are using the batch file to launch the Java app), then use the start command to launch it:-

start "C:\Program Files (x86)\Java\jre6\bin\javaw.exe" -Xmx1024M -Xms1024M -jar Jilko.jar

This will launch the java app and carry on executing the batch file without waiting for the java app to finish.

link|improve this answer
feedback

Explanation:

Here is how it works; a batch file is processed one line at a time. Each command is executed in turn and the batch processor waits for one command to finish before starting the next. The problem you are experiencing is because the Java application you are launching (Jilko.jar) is a windowed program which continues to run even after the line that launches it. If it were a tool that performs some action and then terminates, the batch file would continue on to the next command (or exit if there are no more). Because the program is still running, the batch processor waits until the window is closed before moving on. You can see this in action by exiting the Java program: the console window with the batch file then closes.


Solution:

What you need to do to fix it, is to instruct the batch processor to launch the program and continue on without waiting as such:

start "C:\Program Files (x86)\Java\jre6\bin\javaw.exe" -Xmx1024M -Xms1024M -jar Jilko.jar

The start command is a built-in command that spawns a process (basically like running a program from the Start menu). So what happens in this context is that the batch processor runs the start command which in turn runs the specified program and terminates (itself, not the spawned program). As such, the batch processor continues on as expected. It also has some options that can be useful such as running the program minimized (/min) or maximized (/max), running it in low priority (/low) and so on. See start /? for details.

link|improve this answer
feedback

Once the app is done, it should be exiting. Are you sure the Java app is exiting properly?

link|improve this answer
feedback

Also -- use EXIT at all times, under Windows 7, as just getting to the end of the batch file doesn't necessarily terminate it -- as in earlier Windows versions. Windows 7 may be more sensitive to this that earlier NT versions (e.g. Windows 2000 Professional). This was mentioned in some, but not all of the previous answers.

Details of personal experience to support answer:

After transferring a StarOffice5.2 installation from Windows 2000 to Windows 7, I was getting memory space errors upon terminating the suite. This was not seen in Windows 2000.

Years ago, I had written batch files to automatically back-up and restore soffice.ini, to permit a repair when it becomes corrupted (often enough to be a problem -- the suite fails to load). The automatic backup (triggered by a link to the batch file, placed in Office52\user\config\startup) only occurs about after a 5-second delay, however. I noticed whenever I exited the suite just before the batch file ran, the suite's termination went without error. This pointed me to a problem in the batch files.

After the 'EXIT' Command was placed as the last line on the batch files, the office suite began to terminate without memory-space error messages, at all times, whether or not the Batch Files had run.

link|improve this answer
feedback

try:

cmd /c "C:\Program Files (x86)\Java\jre6\bin\javaw.exe" -Xmx1024M -Xms1024M -jar Jilko.jar

link|improve this answer
feedback

I was just dealing with the same problem, and it finally resolved itself after making what seemed like random changes to the batchfile- I don't understand why but I'll post it here in case it helps someone else later.

I make use of the SysInternals Pskill utility and the sleep utility since XP Home does not include much in terms of commandline functionality.


This is the batchfile that actualy closes after it's done:

@echo off
start /min C:\Progra~1\PsTools\pskill.exe explorer.exe
start /min C:\Progra~1\PsTools\pskill.exe Powermenu.exe
start /min C:\Progra~1\PsTools\pskill.exe PWGen.exe
start /min C:\Progra~1\PsTools\pskill.exe redshiftgui.exe
start /min C:\Progra~1\PsTools\pskill.exe clipx.exe
sleep 2
start explorer.exe
sleep 3
start C:\Progra~1\ClipX\clipx.exe
sleep 1
start C:\Progra~1\Powermenu\PowerMenu.exe
sleep 1
start /min C:\Progra~1\PWGen\PWGen.exe
sleep 1
start C:\Progra~1\RedshiftGUI\redshiftgui.exe && exit

If I had the last few lines changed like this, the cmd window would stay open until I clicked the 'X' in the corner:

start C:\Progra~1\RedshiftGUI\redshiftgui.exe
sleep 1
start /min C:\Progra~1\PWGen\PWGen.exe && exit

Even when I tried to invoke pskill to kill itself, the cmd.exe process would disappear from Task Manager, and pskill would report from inside it's cmd.exe that the cmd.exe process had been killed, yet the cmd.exe window would still stay up until I clicked the 'X' in the corner:

start C:\Progra~1\RedshiftGUI\redshiftgui.exe
sleep 1
start /min C:\Progra~1\PWGen\PWGen.exe
sleep 1
C:\Progra~1\PsTools\pskill.exe cmd.exe

After I added && exit to every line, I noticed some of them responded to it and would interrupt the batch processing- while others wouldn't.

So I just put one of the responsive ones at the end instead of how I had it originally.

As I said, I don't know why, but am glad this is over with.

link|improve this answer
This is so unnecessary. – surfasb Jan 26 at 1:20
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.