Mister Dev
Mister Dev

Reputation: 10431

How can I run a program from a batch file without leaving the console open after the program starts?

For the moment my batch file look like this:

myprogram.exe param1

The program starts but the DOS Window remains open. How can I close it?

Upvotes: 211

Views: 940766

Answers (12)

Code Novice
Code Novice

Reputation: 2398

My issue was similar to this however I was needing to open a file located on OneDrive/Sharepoint using a bat file. I could easily open a file located on my local hard drive and I could could also open the Shared word doc (*.docx) from the command prompt by pasting in the URL. When pasting that same exact URL into a bat file Microsoft word would throw an error.

The error as I discovered thru trial and error was that the URL encoded characters needed to be replaced. My URL had spaces and so it contained %20 for each space within the URL. When attempting to load the URL via the bat file with these encoded characters Microsoft Word would state that it could not find the file.

Microsoft Error Screenshot

Correct syntax to open a URL shared word document in Microsoft Word via a bat file

Start "title" WINWORD.EXE "https://domain-company.my.sharepoint.com/personal/user_Name/Documents/Documents/Folder Name/Contract Docs/Current/document.docx?web=1"

Syntax below throws an error due to %20 URL Encoded Character

Start "title" WINWORD.EXE "https://domain-company.my.sharepoint.com/personal/user_Name/Documents/Documents/Folder%20Name/Contract%20Docs/Current/document.docx?web=1"

Upvotes: 0

user7818749
user7818749

Reputation:

Loads of answers for this question already, however I am posting this to highlight something important:

Start "C:\Program Files\someprog.exe"

The above 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"

Upvotes: 9

VonC
VonC

Reputation: 1323045

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

Upvotes: 35

Ilyich
Ilyich

Reputation: 5776

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 = Nothing

Copy the lines above to an editor and save the file with .VBS extension.

Upvotes: 0

Gilco
Gilco

Reputation: 1336

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

Upvotes: 17

Leustad
Leustad

Reputation: 143

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.

Upvotes: 0

Marshall
Marshall

Reputation: 3081

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.

Upvotes: 308

Patrick Desjardins
Patrick Desjardins

Reputation: 140753

You can use the exit keyword. Here is an example from one of my batch files:

start myProgram.exe param1
exit

Upvotes: 179

Zosimas
Zosimas

Reputation: 508

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)

Upvotes: 22

Midas
Midas

Reputation: 21

My solution to do this from the GUI:

  1. Create a shortcut to the program you want to run;

  2. Edit the shortcut's properties;

  3. Change the TARGET field to %COMSPEC% /C "START "" "PROGRAMNAME"";

  4. Change the RUN field 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).

Upvotes: 1

Chris Dail
Chris Dail

Reputation: 26029

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

Upvotes: 20

Lasse V. Karlsen
Lasse V. Karlsen

Reputation: 391276

Look at the START command, you can do this:

START rest-of-your-program-name

For instance, this batch-file will wait until notepad exits:

@echo off
notepad c:\test.txt

However, this won't:

@echo off
start notepad c:\test.txt

Upvotes: 55

Related Questions