[windows] How to prevent auto-closing of console after the execution of batch file

What command can I put at the end of a batch file to prevent auto-closing of the console after the execution of the file?

This question is related to windows command-line batch-file

The answer is


Call cmd at the end of the batch file.


If you want cmd.exe to not close, and able to continue to type, use cmd /k

Just felt the need to clarify what /k does (from windows website):

/k : Carries out the command specified by string and continues.

So cmd /k without follow up command at the end of bat file will just keep cmd.exe window open for further use.

On the other hand pause at the end of a batch file will simply pause the process and terminate cmd.exe on first button press


my way is to write an actual batch (saying "foo.bat") to finish the job; then create another "start.bat":

@echo off
cmd /k foo.bat

I find this is extremely useful when I set up one-time environment variables.


I know I'm late but my preferred way is:

:programend
pause>nul
GOTO programend

In this way the user cannot exit using enter.


There are two ways to do it depend on use case

1) If you want Windows cmd prompt to stay open so that you can see execution result and close it afterwards; use

pause

2) if you want Windows cmd prompt to stay open and allow you to execute some command afterwords; use

cmd

enter image description here


Easy, add cmd to your last line of bat, BUT! if you reset or clear your system path, you must start your cmd with the full path, like:

%windir%\system32\cmd.exe

For example, I have a bat file to reset jdk to old version like this:

PATH=C:\Program Files\Java\jdk1.6.0_45\bin;C:\apache-ant-1.7.1\bin
SET JAVA_HOME=C:\Program Files\Java\jdk1.6.0_45
%windir%\system32\cmd.exe

since I reset the system path, I have to run cmd with the full path, or the system can't find cmd.exe, it will fail to run cmd, and just close the window, and you can't see the error msg.


Depends on the exact question!

Normally pause does the job within a .bat file.

If you want cmd.exe not to close to be able to remain typing, use cmd /k command at the end of the file.


besides pause.

set /p=

can be used .It will expect user input and will release the flow when enter is pressed.

or

runas /user:# "" >nul 2>&1

which will do the same except nothing from the user input will be displayed nor will remain in the command history.


If you are using Maven and you want to skip the typing and prevent the console from close to see the result you need to use the CALL command in the script, besides just the 'mvn clean install'.

Like this will close the console

ECHO This is the wrong exemple
mvn clean install
pause

Like this the console will stay open

ECHO This is the right exemple
CALL mvn clean install
pause

If you dont use the CALL command neither of the pasts exemples will work. Because for some reason the default behaviour of cmd when calling another batch file (which mvn is in this case) is to essentially replace the current process with it, unlike calling an .exe


The below way of having commands in a batch file will open new command prompt windows and the new windows will not exit automatically.

start "title" call abcd.exe param1 param2  
start "title" call xyz.exe param1 param2

Possibility 1: Just make 2 .bat files and write into the first:

start <filename> // name of 2nd batch file
exit

Batch file 2 is the file that wont close in the end. So now when you open batch nr.1 It will start the 2nd and cloe itself. When the 2nd finishes it will not close entirely (as long as you wont put exit at the end)

Possibility 2: Batch file 1:

call <filename>
cls
echo End of file
pause
<any code you want>

When the 2nd file ends then it will proceed to file 1 again and output the rest of it. With that you can even make error handlers. If nr.1 crashes it goes into nr.2 and displays it


Add cmd.exe as a new line below the code you want to execute:

c:\Python27\python D:\code\simple_http_server.py

cmd.exe

This little hack asks the user to enter a key and stores it into the variable %exitkey% (this variable could be called anything you like though).

set /p exitkey= "Press any key to continue..."

NB: the space after the '=' is very important


pause

or

echo text to display
pause>nul

Had problems with the answers here, so I came up with this, which works for me (TM):

cmd /c node_modules\.bin\tsc
cmd /c node rollup_build.js
pause

cmd /k cd C:\Projects.....

If you want your cmd opened at specific long location


Examples related to windows

"Permission Denied" trying to run Python on Windows 10 A fatal error occurred while creating a TLS client credential. The internal error state is 10013 How to install OpenJDK 11 on Windows? I can't install pyaudio on Windows? How to solve "error: Microsoft Visual C++ 14.0 is required."? git clone: Authentication failed for <URL> How to avoid the "Windows Defender SmartScreen prevented an unrecognized app from starting warning" XCOPY: Overwrite all without prompt in BATCH Laravel 5 show ErrorException file_put_contents failed to open stream: No such file or directory how to open Jupyter notebook in chrome on windows Tensorflow import error: No module named 'tensorflow'

Examples related to command-line

Git is not working after macOS Update (xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools) Flutter command not found Angular - ng: command not found how to run python files in windows command prompt? How to run .NET Core console app from the command line Copy Paste in Bash on Ubuntu on Windows How to find which version of TensorFlow is installed in my system? How to install JQ on Mac by command-line? Python not working in the command line of git bash Run function in script from command line (Node JS)

Examples related to batch-file

'ls' is not recognized as an internal or external command, operable program or batch file '' is not recognized as an internal or external command, operable program or batch file XCOPY: Overwrite all without prompt in BATCH CanĀ“t run .bat file under windows 10 Execute a batch file on a remote PC using a batch file on local PC Windows batch - concatenate multiple text files into one How do I create a shortcut via command-line in Windows? Getting Error:JRE_HOME variable is not defined correctly when trying to run startup.bat of Apache-Tomcat Curl not recognized as an internal or external command, operable program or batch file Best way to script remote SSH commands in Batch (Windows)