I have a bat file like this:
ipconfig
That will print out the IP info to the screen, but before the user can read that info CMD closes itself.
I believe that CMD assumes the script has finished, so it closes.
How do I keep CMD open after the script is finished?
pause
which is a nice workaround (and that's why I upvoted this answer) but not one that really solves the issue because after the user hits Enter
or Space
the window will close...
Put pause
at the end of your .BAT file.
Depending on how you are running the command, you can put /k
after cmd
to keep the window open.
cmd /k my_script.bat
Simply adding cmd /k
to the end of your batch file will work too. Credit to Luigi D'Amico who posted about this in the comments below.
cmd /k
at the end.
Just add @pause
at the end.
Example:
@echo off
ipconfig
@pause
Or you can also use:
cmd /k ipconfig
@pause
and pause
can be seen visually in this answer: stackoverflow.com/questions/17957076#60053224
When the .bat file is started not from within the command line (e.g. double-clicking).
echo The echoed text
@pause
https://i.stack.imgur.com/JTmOR.jpg
echo The echoed text
pause
https://i.stack.imgur.com/qu2IC.jpg
echo The echoed text
cmd /k
https://i.stack.imgur.com/TBLon.jpg
echo The echoed text & pause
https://i.stack.imgur.com/8p7hp.jpg
Adding pause
in (Windows 7) to the end did not work for me
but adding the cmd /k
in front of my command did work.
Example :
cmd /k gradlew cleanEclipse
start cmd /k
did the magic for me. I actually used it for preparing cordova phonegap app it runs the command, shows the result and waits for the user to close it. Below is the simple example
start cmd /k echo Hello, World!
What I did use in my case
start cmd /k cordova prepare
Update
You could even have a title for this by using
start "My Title" echo Hello, World!
If you are starting the script within the command line, then add exit /b
to keep CMD opened
ipconfig
and other built-in batch files is a very bad idea.
In Windows add '& Pause' to the end of your command in the file.
I was also confused as to why we're adding a cmd
at the beginning and I was wondering if I had to open the command prompt first. What you need to do is type the full command along with cmd /k
. For example assume your batch file name is "my_command.bat" which runs the command javac my_code.java
then the code in your batch file should be:
cmd /k javac my_code.java
So basically there is no need to open command prompt at the current folder and type the above command but you can save this code directly in your batch file and execute it directly.
javac -d C:\xxx\lib\ -classpath C:\xxx\lib\ *.java
cmd cd C:\xxx\yourbat.bat
the second command make your cmd window not be closed. The important thing is you still able to input new command
As a sidenote this also works when running a command directly from the search bar in windows.
e.g. directly running ipconfig
will directly close the cmd window after the command has exited.
https://i.stack.imgur.com/JhEBJ.png
Using cmd \k <command>
won't - which was what i was trying to do when i found this answer.
https://i.stack.imgur.com/b2PY5.png
It has the added advantage of always recognizing the command you're trying to run. E.g. running echo hello world
from the searchbar won't work because that is not a command, however cmd \k echo hello world
works just fine.
Success story sharing