I don't know why that isn't working as expected, I can only think it's because of the error type involved.
If you run your
test again and use something like copy to copy a non existent file in a .bat file (which will set errorlevel to 1) and then copy an existing file in a .cmd file you will see the errorlevel is reset to 0.