次のコードは、WinXPとWin7で異なるERRORLEVELを返します。
set "QQQ="
echo ERRORLEVEL=%ERRORLEVEL%
XP
>ERRORLEVEL=1
Windows 7
>ERRORLEVEL=0
なんで?
次のコードは、WinXPとWin7で異なるERRORLEVELを返します。
set "QQQ="
echo ERRORLEVEL=%ERRORLEVEL%
XP
>ERRORLEVEL=1
Windows 7
>ERRORLEVEL=0
なんで?
XP seems to make more sense here, as it sets the errorlevel to 1, but only if QQQ is an undefined variable before.
WIN7 have two different ways!
set does not change the errorlevel, if the code is inside a .BAT file
set set the errorlevel always to 0, if the code is inside a .CMD file
Why?
Nobody knows. You can ask Microsoft, but I suppose it's simply an unexpected behaviour.
Windows XPでは、SETコマンド自体がエラーレベル(通常は1)を設定するため、これは機能しません。QQQの値は定義されていませんが、Windows 7では、SET値がQQQをnullに設定するため、たとえばWINDOWS7ではERRORLEVEL=0になります。
set "QQQ"
echo %ERRORLEVEL%
pause
環境変数QQQが定義されていません//ERRORLEVEL= 1、たとえばIN WINDOWS 7
set "QQQ=" :: sets QQQ as null
echo %ERRORLEVEL%
pause
環境変数QQQが定義されていません//ERRORLEVEL= 0