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

197,997

Solution 1

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.

Solution 2

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.

Solution 3

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.

Solution 4

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.

Solution 5

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

Share:
197,997

Related videos on Youtube

Joe
Author by

Joe

Updated on September 17, 2022

Comments

  • Joe
    Joe 8 months

    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
    
  • surfasb
    surfasb over 11 years
    This is so unnecessary.
  • Muhammad Hewedy
    Muhammad Hewedy over 9 years
    Can we consider start like nohup en.wikipedia.org/wiki/Nohup
  • jekcom about 9 years
    && exit works for me
  • ganesh over 7 years
    No. (Unless you want to compare with nohup and &).
  • Ramhound
    Ramhound over 1 year
    While this link may answer the question, it is better to include the essential parts of the answer here and provide the link for reference. Link-only answers can become invalid if the linked page changes. - From Review
  • xanda over 1 year
    Except that this isn't a "link only" answer.
  • Ramhound
    Ramhound over 1 year
    You didn't explain the reason exit /b would solve the problem. Anyone can provide a link to ss64.com
  • xanda over 1 year
    Further explanation is not necessary in this case: The OP is able to check the proposal using the builtin help (it's unlikely someone writing batch scripts hasn't heard of the /? facility) as well as their own experimentation. Adding any more would therefore be verbose.