¿Por qué cmd.exe tiene un comportamiento diferente de nivel de error en una máquina de 64 bits?

Si hago un script por lotes llamado temp.bat (por ejemplo) que contiene:

exit /b 1

Cuando lo ejecuto de varias maneras, tengo un comportamiento diferente en mi sistema XP de 32 bits en comparación con un sistema XP de 64 bits.

En 32 bits:

> temp.bat
> echo %ERRORLEVEL%
1
> cmd /c temp.bat
> echo %ERRORLEVEL%
0

En 64 bits:

> temp.bat
> echo %ERRORLEVEL%
1
> cmd /c temp.bat
> echo %ERRORLEVEL%
1

He buscado a través de las opciones de cmd.exe y no he podido encontrar ninguna opción que controle cómo se propaga la información de nivel de error de los scripts por lotes. En este punto no puedo encontrar ninguna explicación racional para esta diferencia.

Respuestas a la pregunta(2)

Su respuesta a la pregunta