2012-03-09 2 views
1

필자는 유닉스에서 항상 더 강력한 쉘 스크립팅이 있었기 때문에 DOS로 작업하지 않았다. 처음으로 나는 Windows에서 일하고 DOS/Batch 스크립트에 대해 많이 모른다.이 오류 수준을 설정하는 방법은 무엇입니까?

원격 컴퓨터를 다시 시작하기 위해 작은 스크립트를 작성하려고했습니다. 스크립트를 정교하게 만들면서 마지막 실행 명령의 반환 코드 종류 인 환경 변수 %% ERRORLEVEL %에 대해 알게되었습니다.

명령이 실행되었지만 원하는 결과 또는 일부 오류 msg가 생성되지 않으면 Unix에서 오류 코드가 0이 아닙니다. 원격 종료를 시도하고 네트워크에 존재하지 않는 호스트를 제공하고 있습니다. "네트워크 경로를 찾을 수 없습니다."하지만 % ERRORLEVEL %은 여전히 ​​0입니다. 이 질문을하는 것이 요점입니다.

가 던지는 때 나는 "네트워크 경로를 찾을 수 없습니다"후 % ERRORLEVEL %, 제로로 지정되어 다른 무언가를 캡처해야 성공적으로 명령을 실행하고이 % ERRORLEVEL %의 변경되지 마십시오 내가이 권리를 얻기 위해 캡처해야합니까?
shutdown command I am using: 

shutdown -r -f -t %DELAYOF% -m \\%COMPNAME% -c %COMMENT% 

내가 잘못된 값을 제공

는 프롬프트 "을 (를) 찾을 수 없습니다 네트워크 경로"그러나 %의 EERORLEVEL의 %가 변경되지 않는 말한다 %의 COMPNAME의 %를 제공합니다.

+0

ERRORLEVEL을 테스트하기 전에 실행중인 명령은 무엇입니까? – hometoast

+0

어떤 버전의 Windows? –

+0

ERRORLEVEL 환경 변수가 할당되지 않았는지 다시 확인하십시오 (% ERRORLEVEL %이면 작동하지 않음). 인수없이 SET 명령을 사용하면 모든 현재 환경 변수가 표시됩니다. –

답변

1

문제에 대한 답 - 오류 수준은 % compname %이 (가) 환경 변수가 아니지만 % computername %이 (가) 있습니다.

하면이 시도 : (테스트하지)

shutdown -r -f -t %DELAYOF% -m \\%COMPUTERNAME% -c %COMMENT% 

을이 당신이 우리가 그것을 검토 할 수 있도록, 스크립트를 게시 적어도 부분하시기 바랍니다 수 찾고하지 것입니다 경우 그 이 스 니펫과 관련이 있습니다. 에 관해서는

을 % ERRORLEVEL %는 다른 곳에서 그것을 포착하지 않도록하여 오류 수준의 공백을 유지합니다 명령

verify >nul 
shutdown -r -f -t %DELAYOF% -m \\%COMPNAME% -c %COMMENT% 
echo.%ERRORLEVEL%>yourfile.txt 

verify >nul의 전면에 넣고하려고합니다.

0

netname을 찾을 수 없으면 53의 ERRORLEVEL을 반환해야합니다. 적어도 Win7에 대한 내 테스트는 수행합니다.

오류 수준 에 대한 테스트가 즉시 종료 명령 인 다음에 오는지 확인하십시오.

관련 문제