O lote em lote perde o nível de erro

Considere o seguinte bastão, test.bat (PC01 está desativado):

mkdir \\PC01\\c$\Test || goto :eof

Se eu executar esse bastão a partir de um shell de comando:

> test.bat || echo 99
> if ERRORLEVEL 1 echo 55

A saída é apenas 55. Não 99. Há um nível de erro, mas o|| operador não viu.

Se eu correr esse bastão usandocmd /c -

> cmd /c test.bat || echo 99
> if ERRORLEVEL 1 echo 55

A saída está em branco. O nível de erro é 0.

Se eu remover o|| goto :eof, tudo funciona como se poderia prever - ou seja, a saída seria

99 55

Alguém sabe por que esse comportamento ERRORLEVEL semi-existente semi-cozido está ocorrendo?

questionAnswers(3)

yourAnswerToTheQuestion