Quel est l’équivalent de $? dans Windows?

Est-ce que quelqu’un sait ce qu’est l’équivalent de $? dans la ligne de commande Windows? Y a-t-il?

EDIT: $? est la variable UNIX qui contient le code de sortie du dernier processus

Vous voulez vérifier la valeur de %ERRORLEVEL% .

Fichiers batch Windows

% ERRORLEVEL% Renvoie le code d’erreur de la dernière commande utilisée. Une valeur non nulle indique généralement une erreur.

http://technet.microsoft.com/en-us/library/bb490954.aspx

Windows Powershell

$? Contient True si la dernière opération a réussi et False sinon. Et

$ LASTEXITCODE Contient le code de sortie de la dernière exécution exécutable de Win32.

http://blogs.msdn.com/powershell/archive/2006/09/15/ErrorLevel-equivalent.aspx

Cygwin Bash Scripting

$? Développe le code de statut de sortie du programme de premier plan le plus récemment exécuté.

http://unix.sjcc.edu/cis157/BashParameters.htm

Désolé de remonter un ancien thread, mais il est intéressant de noter que% ERRORLEVEL% n’est pas réinitialisé avec chaque commande. Vous pouvez toujours tester “positif” pour errorlevel après plusieurs lignes de code de lot ultérieur – et réussi.

Vous pouvez réinitialiser de manière fiable errorlevel sur un état propre avec ver . Cet exemple fonctionne avec UnxUtils pour une liste de répertoires plus Linux-ish. La réinitialisation peut sembler superflue à la fin, mais pas si je dois appeler ce script depuis un autre.

 :------------------------------------------------------------------------------ : ll.bat - batch doing its best to emulate UNIX : Using UnxUtils when available, it's nearly unix. :------------------------------------------------------------------------------ : ll.bat - long list: batch doing its best to emulate UNIX : ------------------------------------ : zedmelon, designer, 2005 | freeware :------------------------------------------------------------------------------ @echo off setlocal : use the UnxUtil ls.exe if it is in the path ls.exe -laF %1 2>nul if errorlevel 1 ( echo. echo ----- ls, DOS-style, as no ls.exe was found in the path ----- echo. dir /q %1 ) : reset errorlevel ver>nul endlocal 

N’hésitez pas à l’utiliser. Si vous n’avez pas vu UnxUtils, vérifiez-les.

 @echo off run_some_command if errorlevel 2 goto this if errorlevel 1 goto that goto end :this echo This goto end :that echo That goto end :end 

% errorlevel%