因爲我編輯的被拒絕......
原代碼發佈了較大的腳本的一部分?如果是這樣,那麼你是否設置你的errcode來匹配ERRORLEVEL環境變量?
psexec \\workstation.domain -u username -p password cmd /c "assoc.pdf= "
IF '%ERRORLEVEL%'=='0' (
echo Success!
) else (
REM display psexec error here.
)
每當試圖detemine IF/THEN批量和你使用==你需要用來包圍變量和單「'」標記的valuecheck。上面的代碼爲您糾正了這個問題,並用ERRORLEVEL替代了errcode,這是Windows的默認環境變量。
此外,在實踐中我總是用下面的任何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
編輯這一點 - 當檢查IF%VAR%=值兩者%VAR%和變應以「'」包圍(蜱) – rud3y
此外,只是要注意,不知道如果你嘗試過這個,但errcode不是一個environement變量,但ERRORLEVEL是。我不知道這是否是一個更大的腳本的一部分,但如果沒有,嘗試替代IF「%ERRORLEVEL%」 ==「0」(...而不是「%ERRCODE%」 – rud3y
不應該被判刑「有什麼辦法......」?( 「IS」,而不是 「IF」) – Jocelyn