2013-08-29 7 views
0

두 개의 다른 Windows 2008 SP2 서버가 있습니다. 프로덕션에는 Microsoft 클러스터 서비스가 실행 중입니다. 이제 하나의 특정 배치 스크립트에 다음과 같은 명령이 있습니다 :이 성공적으로 완료 및 스크립트에서 예상, DSMC 증분 수익률 8로 작동 디바이스에서errorlevel은 한 서버에서 작동하지만 다른 서버에서는 작동하지 않습니다.

dsmc incr "%ARCHIVE_DIR%\*" 
if errorlevel 1 goto EXCPT 
more code to do purging 

Excpt: 
echo "script backup error" 

코드를 퍼지로 이동합니다. 그러나 dsmc incr이 8로 돌아가더라도 errorlevel은 항상 1로 평가되고 Excpt :로 점프됩니다. 누구든지 이걸 도와 줄 수 있니?

+0

업데이트가 있고, dsmc incr은 dev에서 0을 리턴하고 프로덕션에서 8을 리턴합니다. errorlevel 1은 errorlevel이 1보다 크거나 같음을 의미하면 [링크] (http://stackoverflow.com/questions/3942265/errorlevel-in-a-for-loop-batch-windows)에 따라 이해가됩니다. 딱 하나만. –

+0

질문에 수정하십시오! –

답변

1

IF을 확인하십시오.

`IF /?` 

당신은 발견 할 것이다 : 마지막으로 프로그램 실행이 같거나 지정된 숫자보다 큰 종료 코드를 반환하는 경우

ERRORLEVEL (...)는 진정한 조건을 지정합니다.

그래서,

if errorlevel 1 ... 

는 오류 수준> = 1에 대한 진정한 평가합니다.

정확한 매칭을 얻으려면, 사용 ERRORLEVEL이 환경 변수로 사용되는 경우

IF ERRORLEVEL 1 IF NOT ERRORLEVEL 2 ... 

또는

IF %ERRORLEVEL% == 1 ... 

마지막 한 환경에서 작동하지 않습니다.