How can I run a program from a batch file without leaving the console open after the program starts?
Andrew Henderson
For the moment my batch file look like this:
myprogram.exe param1The program starts but the DOS Window remains open. How can I close it?
111 Answers
Use the start command to prevent the batch file from waiting for the program. Just remember to put a empty double quote in front of the program you want to run after "Start". For example, if you want to run Visual Studio 2012 from a batch command:
Start "" "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe"notice the double quote after start.
4You can use the exit keyword. Here is an example from one of my batch files:
start myProgram.exe param1
exit 3 Look at the START command, you can do this:
START rest-of-your-program-nameFor instance, this batch-file will wait until notepad exits:
@echo off
notepad c:\test.txtHowever, this won't:
@echo off
start notepad c:\test.txt 0 From my own question:
start /b myProgram.exe params...works if you start the program from an existing DOS session.
If not, call a vb script
wscript.exe invis.vbs myProgram.exe %*The Windows Script Host Run() method takes:
- intWindowStyle : 0 means "invisible windows"
- bWaitOnReturn : false means your first script does not need to wait for your second script to finish
Here is invis.vbs:
set args = WScript.Arguments
num = args.Count
if num = 0 then WScript.Echo "Usage: [CScript | WScript] invis.vbs aScript.bat <some script arguments>" WScript.Quit 1
end if
sargs = ""
if num > 1 then sargs = " " for k = 1 to num - 1 anArg = args.Item(k) sargs = sargs & anArg & " " next
end if
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run """" & WScript.Arguments(0) & """" & sargs, 0, False 2 This is the only thing that worked for me when I tried to run a java class from a batch file:
start "cmdWindowTitle" /B "javaw" -cp . testprojectpak.MainForm
You can customize the start command as you want for your project, by following the proper syntax:
Syntax START "title" [/Dpath] [options] "command" [parameters]
Key: title : Text for the CMD window title bar (required) path : Starting directory command : The command, batch file or executable program to run parameters : The parameters passed to the command
Options: /MIN : Minimized /MAX : Maximized /WAIT : Start application and wait for it to terminate /LOW : Use IDLE priority class /NORMAL : Use NORMAL priority class /HIGH : Use HIGH priority class /REALTIME : Use REALTIME priority class /B : Start application without creating a new window. In this case ^C will be ignored - leaving ^Break as the only way to interrupt the application /I : Ignore any changes to the current environment. Options for 16-bit WINDOWS programs only /SEPARATE Start in separate memory space (more robust) /SHARED Start in shared memory space (default) 0 You should try this. It starts the program with no window. It actually flashes up for a second but goes away fairly quickly.
start "name" /B myprogram.exe param1 2 How to solve "space problem" and local dependencies:
@echo off
cd "C:\Program Files\HeidiSQL"
start heidisql.exe
cd "C:\Program Files (x86)\Google\Chrome\Application"
start chrome.exe
exit 4 Loads of answers for this question already, but I am posting this to clarify something important, though this might not always be the case:
Start "C:\Program Files\someprog.exe"Might cause issues in some windows versions as Start actually expects the first set of quotation marks to be a windows title. So it is best practice to first double quote a comment, or a blank comment:
Start "" "C:\Program Files\someprog.exe"or
Start "Window Title" "C:\Program Files\someprog.exe" 1 My solution to do this from the GUI:
Create a shortcut to the program you want to run;
Edit the shortcut's properties;
Change the
TARGETfield to%COMSPEC% /C "START "" "PROGRAMNAME"";Change the
RUNfield to minimized.
Ready! See how you like it...
PS: Program parameters can be inserted in between the two final quotation marks; the PROGRAMNAME string can be either a filename, a relative or an absolute path -- if you put in an absolute path and erase the drive letter and semicolon, then this will work in a thumbdrive no matter what letter the host computer assigns to it... (also, if you place the shortcut in the same folder and precede the program filename in PROGRAMNAME with the %CD% variable, paths will always match; same trick can be used in START IN field).
If this batch file is something you want to run as scheduled or always; you can use windows schedule tool and it doesn't opens up in a window when it starts the batch file.
To open Task Scheduler:
- Start -> Run/Search ->
'cmd' - Type
taskschd.msc-> enter
From the right side, click Create Basic Task and follow the menus.
Hope this helps.
Here is my preferred solution. It is taken from an answer to a similar question.
Use a VBS Script to call the batch file:
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "C:\path\to\your\batchfile.bat" & Chr(34), 0
Set WshShell = NothingCopy the lines above to an editor and save the file with .VBS extension.