Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

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
share|improve this question

8 Answers 8

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.

share|improve this answer
2  
I'm not sure this works as expected. The start command takes an optional first parameter "Title". With your command I believe it will open a new cmd instance with the executable as the title and attempt to run "-Xmx... etc". Instead, you should do start "" "C:\Program Files (x86)..." -Xmx... etc –  Terrance Dec 7 '12 at 20:11
    
It's two years ago since I wrote this - normally I'd try something before posting, but had a different OS back then. Just tried in Windows 8 and it does not work - using the extra "" works. I'll edit the response so it's up to date. Thanks. –  misterjaytee Dec 7 '12 at 23:05

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

As Terrance mentioned, the "" is the title to use for the console window. However it is only optional if the command is not in quotes; otherwise is required. You can put something in there if you like or leave it empty, but if the command is in quotes, it must be present, otherwise the command-interpreter will treat the quoted command as the title and open a console that just sits there waiting for something to do.

You can use something the following command instead, but the quotes are just easier and safer since shortnames are not guaranteed to be the same on every system.

start C:\Progra~2\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.

share|improve this answer
    
Can we consider start like nohup en.wikipedia.org/wiki/Nohup –  Muhammad Hewedy Jan 7 at 8:03

I have found that some of the programs I launch leave processes running, and the console window will not close until they terminate if I just run them by launching the executable.

The START program fixes that, but the old problem with START is still around. You can't just use:

START "c:\my dir\myfile.exe"

The first parameter of START is still the window name. If you omit it, you just open a CMD console box with the window named whatever you tried to launch. In the above instance, I'd now have a console window with the window title of "c:\my dir\myfile.exe". Not what I wanted!

To omit the window name, just use a pair of double quotes to define an empty string, such as:

START "" "c:\my dir\myfile.exe"

Finally, end your batch file with an EXIT command to ensure it closes.

This method seems to work consistently in Windows 7 and 8.

For troubleshooting, I find that adding an ECHO of what I'm about to do, then a TIMEOUT of what I just did, helps a lot. For example:

ECHO I'm about to launch the program...
START "" "c:\my dir\myfile.exe"
TIMEOUT 5

Since the Timeout gives you a countdown, you don't need to ECHO that you're about to delay.

share|improve this answer

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

share|improve this answer

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.

share|improve this answer

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.

share|improve this answer
    
This is so unnecessary. –  surfasb Jan 26 '12 at 1:20
    
&& exit works for me –  jekcom May 27 at 11:14

try:

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

share|improve this answer

Here is how i did it:

  1. Create a batch file with the following contents:

    java -Xms512M -Xmx512M -jar yourFileName.jar -o true
    EXIT
    
  2. Within your exit input stream, add:

    System.exit(1);
    
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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