huh, I don't know why, but call didn't do the trick call script.bat didn't return to the original console. cmd /k script.bat did return to the original console.
You can just invoke the batch script by name, as if you're running on the command line.
So, suppose you have a file bar.bat that says echo This is bar.bat! and you want to call it from a file foo.bat, you can write this in foo.bat:
if "%1"=="blah" bar
Run foo blah from the command line, and you'll see:
C:\>foo blah
C:\>if "blah" == "blah" bar
C:\>echo This is bar.bat!
This is bar.bat!
But beware: When you invoke a batch script from another batch script, the original batch script will stop running. If you want to run the secondary batch script and then return to the previous batch script, you'll have to use the call command. For example:
if "%1"=="blah" call bar
echo That's all for foo.bat!
If you run foo blah on that, you'd see:
C:\>foo blah
C:\>if "blah" == "blah" call bar
C:\>echo This is bar.bat!
This is bar.bat!
C:\>echo That's all for foo.bat!
That's all for foo.bat!
huh, I don't know why, but call didn't do the trick
call script.bat
didn't return to the original console.cmd /k script.bat
did return to the original console.You can use
or just
You can just invoke the batch script by name, as if you're running on the command line.
So, suppose you have a file
bar.bat
that saysecho This is bar.bat!
and you want to call it from a filefoo.bat
, you can write this infoo.bat
:Run
foo blah
from the command line, and you'll see:But beware: When you invoke a batch script from another batch script, the original batch script will stop running. If you want to run the secondary batch script and then return to the previous batch script, you'll have to use the
call
command. For example:If you run
foo blah
on that, you'd see:Use
CALL
as inThis will block (pause) the execution of the current batch file, and it will wait until the
CALL
ed one completes.If you don't want it to block, use
START
instead.Get the nitty-gritty details by using
CALL /?
orSTART /?
from the cmd prompt.You should use CALL
Here is example:
You have a.bat:
and b.bat called conditionally from a.bat: