2013-04-30 1 views
1
static void Main(string[] args) 
{ 
    Process process=Process.Start(@"C:\Users\dalvi\Desktop\iisresetdaily.bat"); 

    if(process.ExitCode==0) 
     SendMail("Sucesss in iisreset..", "bye"); // --> case 1 
    else 
     SendMail("Failed iisreset..", "bye"); // --> case 2 
} 

편집 : 내 SendMail 메서드가 정상적으로 작동합니다.C# 배치 파일 상태에서 프로세스 종료?

iisreset /stopiisreset /start을 수행중인 iisresetdaily.bat 파일을 작성했습니다. 성공적으로 실행되면 iisrest 메일 --> case 1, 그렇지 않으면 case 2으로 성공을 보내야합니다.

하지만 난 .bat 파일을 편집하고 그래서 배치 파일이 실패 어떤 임의의 단어를 넣어,하지만 여전히 이 iisreset에서 성공을 의미 case 1 메일을 보낼 때.

여기 Process.ExitCode를 사용하여 배치 파일의 상태를 확인하는 것이 잘못 되었습니까?

배치 파일이 실패한 경우 case 2iisreset을 보내야합니다.

+0

이 작업 *의 힘은 [Windows 작업 스케줄러]를 통해 쉽게 accpmplished 수 * (http://en.wikipedia.org/wiki/Windows_Task_Scheduler) 내가 시도했지만 메일을 보낼 수있는 옵션이없는 –

+0

@JensKloster 작업이 실패 할 때 :) –

답변

0

"배치 파일"이 IIS를 재설정하지 못하거나 실행을 올바르게 완료하고 [statusCode = 0]와 같이 종료 할 수 있기 때문입니다.

@echo Started 
--Some code that works 
--Some code that surely fails [But not break the batch, as in calling external program] 
@echo Finished 

당신은 "반드시 실패하는 몇 가지 코드"하지만, 여전히 "마침"을 목격 것을 알 수 :

시도는 일괄 같이 확인합니다.

0

.bat 스크립트가 유용한 오류 코드/종료 코드를 제공하지 않아 문제가 있다고 생각합니다. This question은 올바르게 설정하는 방법에 대한 유용한 정보를 제공 할 수 있습니다.

또한 오류가 발생하면 this question for info on terminating a batch을 참조하십시오.

0
당신은 ExitCode을 사용하기 전에 종료를위한 과정을 기다릴 필요가

:

using(var process=Process.Start(@"iisresetdaily.bat")) { 
    process.WaitForExit(); 

    var message= 
     0!=process.ExitCode 
      ?"Failed iisreset .." 
      :"Sucesss in iisreset .."; 

    SendMail(message, "bye"); 
} 

우리가 이유를 파악하는 데 도움이 될 수 있음을, 배치 파일의 콘텐츠를 제공 할 수 있다면 그것은 더 나은 것입니다.

+0

iisrest 상태가 실패했는지 확인하려면 어떻게해야합니까? –

+0

@VishwanathDalvi :'ExitCode'를 사용할 수 있습니다. 배치 파일에서 문제가 발생했거나 'iisreset'이'0 '을 반환하지 않습니다. –

0

iisreset 종료 코드를 배치 스크립트에서 확인하고 전파하고 있습니까?

http://support.microsoft.com/kb/202013에 따르면 오류가 발생하면 오류 코드 1을 반환한다는 예가 있습니다.

@echo off 
IISRESET /STOP /NOFORCE 
if errorlevel == 1 goto EXIT 
copy %systemroot%\system32\LogFiles\W3SVC1 d:\backup\W3SVC1 
IISRESET /START 
:EXIT