Почему я не могу вызывать «IF» и «FOR» ни в пакетном режиме, ни в cmd?

Честно говоря, я не ожидаю здесь удовлетворительного ответа. Эту команду нельзя вызвать и все (насколько я знаю, единственные команды, которые нельзя использовать с вызовом). Вот несколько примеров с их выводом:

C:\Windows\system32>call @if a==a echo called 
',' is not recognized as an internal or external command,
operable program or batch file.

C:\Windows\system32>call (@if a==a echo called)
';' is not recognized as an internal or external command,
operable program or batch file.

C:\Windows\system32>call if a==a echo called
'if' is not recognized as an internal or external command,
operable program or batch file.

C:\Windows\system32>call for  %a in (1) do @echo called
'for' is not recognized as an internal or external command,
operable program or batch file.

C:\Windows\system32>call @for  %a in (1) do @echo called
'+' is not recognized as an internal or external command,
operable program or batch file.

C:\Windows\system32>call (@for  %a in (1) do @echo called)
';' is not recognized as an internal or external command,
operable program or batch file.

У меня есть некоторые подозрения, что IF и FOR на самом деле не являются «настоящими» командами - они просто решают передать управление командной строкой строке (или блоку скобок) за ними или нет, что приводит в замешательство вызов. В любом случае, даже при синтаксических ошибках в вызываемых FOR или IF они обнаруживаются:

C:\Windows\system32>call (@if a= echo called)
= was unexpected at this time.

C:\Windows\system32>call (for %a (1) do echo called)
(1 was unexpected at this time.

По крайней мере, разбор сделан.

Ответы на вопрос(2)

Ваш ответ на вопрос