Several ways to call a windows batch file from another one or from prompt. Which one in which case?
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).
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.
Runs the batch file in a new cmd.exe instance.
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