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?