私の編集が拒否されたので...
元のコードは、より大きなスクリプトの一部として投稿されていますか?もしそうなら、ERRORLEVEL環境変数と一致するようにerrcodeを設定しますか?
psexec \\workstation.domain -u username -p password cmd /c "assoc.pdf= "
IF '%ERRORLEVEL%'=='0' (
echo Success!
) else (
REM display psexec error here.
)
IF / THENをバッチで決定しようとし、==を使用する場合は常に、変数と値チェックを単一の"'"マークで囲む必要があります。上記のコードは、この問題を修正するだけでなく、errcodeをWindowsのデフォルトの環境変数であるERRORLEVELに置き換えます。
また、実際には、ERRORLEVELチェックの前に常に以下を使用して初期値を削除し、エラーを適切にキャッチします。
verify >nul
この場合、私は次のことを行います。
verify >nul
psexec \\workstation.domain -u username -p password cmd /c "assoc.pdf= "
IF '%ERRORLEVEL%'=='0' (
echo Success!
) else (
echo.Error is %ERRORLEVEL%; please see http://msdn.microsoft.com/en-us/library/ms681381(VS.85).aspx for more details.
)
受け取ったエラーをチェックするためのweburlを追加しました。
または、対応するページへのURLを自動的に開くこともできます。
@ECHO OFF
verify >nul
set ERRCODE=0
psexec \\workstation.domain -u username -p password cmd /c "assoc.pdf= "
IF '%ERRORLEVEL%'=='0' (
echo Success!
) else (
set ERRCODE=%ERRORLEVEL%
)
IF %ERRCODE% LEQ 499 set MSERROR=681382
IF %ERRCODE% GTR 500 set MSERROR=681388
IF %ERRCODE% GTR 1000 set MSERROR=681383
IF %ERRCODE% GTR 1300 set MSERROR=681385
IF %ERRCODE% GTR 1700 set MSERROR=681386
IF %ERRCODE% GTR 4000 set MSERROR=681387
IF %ERRCODE% GTR 6000 set MSERROR=681389
IF %ERRCODE% GTR 8200 set MSERROR=681390
IF %ERRCODE% GTR 9000 set MSERROR=681391
IF %ERRCODE% GTR 12000 set MSERROR=681384
IF ERRCODE NEQ 0 start http://msdn.microsoft.com/en-us/library/ms%MSERROR%(v=vs.85).aspx
IF ERRCODE NEQ 0 echo.This failed with ERROR: %ERRCODE%
pause