call runs the given script inside the same interpreter instance, so it can only be used for batch files, but it allows the called script to modify the caller's environment using
set. In Windows NT,
call also allows labels to be called as subroutines; e.g.
On the other hand,
start uses the ShellExecute() function, so it can be used to open practically everything Windows itself can open, including documents, other files, and even Internet URLs.
start also has options to open a separate console window, to use different process priorities, and to run a program without waiting for it to finish. However, if you use
start with a batch file, it will run in a separate interpreter, and any modifications to the environment will not be seen from the caller.