Por que não consigo chamar "IF" e "FOR" nem em lote nem no cmd?

Para ser honesto, não espero uma resposta satisfatória aqui. Esse comando não pode ser chamado e é isso (até onde sei os únicos comandos que não podem ser usados ​​com chamadas). Aqui estão alguns exemplos com sua saída:

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.

Eu tenho algumas suspeitas, que IF e FOR não são de fato comandos 'reais' - eles apenas decidem passar o controle de prompt de comando para a linha (ou bloco de colchetes) por trás deles ou não, o que confunde a chamada. Enfim, mesmo que, quando há erros de sintaxe em chamado FOR ou se eles são detectados:

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.

Então, pelo menos, a análise é feita.

questionAnswers(2)

yourAnswerToTheQuestion