Si je fais un script batch nommé temp.bat (par exemple) contenant:Pourquoi cmd.exe a un comportement errorlevel différent sur une machine 64 bits?
exit /b 1
Quand je lance de diverses manières, j'obtenir un comportement différent sur mon système XP 32 bits contre 64 bits Système XP.
32 bits:
> temp.bat
> echo %ERRORLEVEL%
1
> cmd /c temp.bat
> echo %ERRORLEVEL%
0
64 bits:
> temp.bat
> echo %ERRORLEVEL%
1
> cmd /c temp.bat
> echo %ERRORLEVEL%
1
J'ai recherché les options cmd.exe et j'ai été incapable de trouver des options contrôlant la façon dont il propage des informations de niveau d'erreur à partir de scripts batch. À ce stade, je suis incapable de trouver une explication rationnelle à cette différence.
Ma conjecture: La version 32 bits maintenant le comportement original est due à la rétrocompatibilité. La version 64 bits n'a pas cette exigence, donc le comportement est plus favorable aux scripts automatisés. –
Aha! La fille de Raymond [http://blogs.msdn.com/oldnewthing/archive/2003/12/24/45779.aspx] vs demoiselle d'honneur de Raymond [http://blogs.msdn.com/oldnewthing/archive/2009/12/02 /9931184.aspx # 9931572] –
Impossible de reproduire ici. Fonctionne la même sur les deux 32 et 64 bits. – Joey