Several ways to call a windows batch file from another one or from prompt. Which one in which case? Several ways to call a windows batch file from another one or from prompt. Which one in which case? windows windows

Several ways to call a windows batch file from another one or from prompt. Which one in which case?


  1. The batch file will be executed by the current cmd.exe instance (or a new cmd.exe instance if, for instance, double-clicked in Explorer).

  2. Same as #1, only has an effect when used inside a batch/cmd file. In a batch file, without 'call', the parent batch file ends and control passes to the called batch file; with 'call' runs the child batch file, and the parent batch file continues with statements following call.

  3. Runs the batch file in a new cmd.exe instance.

  4. Start will run the batch file in a new cmd.exe instance in a new window, and the caller will not wait for completion.


One thing not clear from the comments here: When you call one batch file from another by using just its name (Case #1 in the original question), execution stops from the calling batch file. For example, in these lines:

called.batecho Hello

The 'echo Hello' line (and anything following it) will not be called. If you use the 'call' keyword, execution resumes after the call. So in this case:

call called.batecho Hello

The 'echo Hello' line will be called.

Additionally, all the variables set in the called.bat file will be passed along back to the calling process, too.

Imagine a 'called.bat' file that had this line:

set MYVAR=hello

Then, %MYVAR% would be available to the calling batch file if it used:

call called.bat

But, it would not be using

REM starts a new cmd.exe processstart called.bat   REM stops and replaces current cmd.exe process with a new onecalled.bat