call無しの他バッチスクリプト呼び出し

バッチスクリプトから他のバッチスクリプトを呼び出すときに、callで呼び出さないと戻ってこない物だと思っていた。

<<foo.bat>>
bar.bat
echo foo ・・・・・実行されない
<<bar.bat>>
echo bar

しかし、forだと実行される。

<<foo.bat>>
for %%A in (a b c) do bar.bat&echo foo ・・・・・echo fooまで含めてちゃんと3回実行される
echo after for ・・・・・これは実行されない
<<bar.bat>>
echo bar

ifも。

<<foo.bat>>
if a==a bar.bat&echo foo ・・・・・echo fooも実行される
echo after if ・・・・・これは実行されない
<<bar.bat>>
echo bar

構文解析の単位で実行が保証されると言うことか。