Two years old, but for completeness...
Standard, inline approach: (i.e. behaviour you'd get when using &
in Linux)
START /B CMD /C CALL "foo.bat" [args [...]]
Notes: 1. CALL
is paired with the .bat file because that where it usually goes.. (i.e. This is just an extension to the CMD /C CALL "foo.bat"
form to make it asynchronous. Usually, it's required to correctly get exit codes, but that's a non-issue here.); 2. Double quotes around the .bat file is only needed if the name contains spaces. (The name could be a path in which case there's more likelihood of that.).
If you don't want the output:
START /B CMD /C CALL "foo.bat" [args [...]] >NUL 2>&1
If you want the bat to be run on an independent console: (i.e. another window)
START CMD /C CALL "foo.bat" [args [...]]
If you want the other window to hang around afterwards:
START CMD /K CALL "foo.bat" [args [...]]
Note: This is actually poor form unless you have users that specifically want to use the opened window as a normal console. If you just want the window to stick around in order to see the output, it's better off putting a PAUSE
at the end of the bat file. Or even yet, add ^& PAUSE
after the command line:
START CMD /C CALL "foo.bat" [args [...]] ^& PAUSE