2012-07-02 2 views
0

배치 스크립트 문을 쓰고 싶습니다. FINDSTR은 문자열을 확인하고 IF가 발견되면 FAILED를 출력하고 프로그램을 종료합니다. IF NOT FOUND가 아닌 경우 확인/다른 문자열을 찾고 찾은 경우 SUCCEEDED를 인쇄하고 프로그램을 닫습니다. 찾지 못하면 오류 메시지를 다시 인쇄하십시오. 아이디어가 있으십니까? 여기조건부 실행 (IF, ELSE) 작동하지 않음

내가 무슨 짓을 : 그것은 작동하지 않는 이유를 모르겠어요

ECHO Checking the log file for errors... 
FINDSTR /C:"Open failed" some_Log.txt && (ECHO Deployment FAILED. 
cscript //nologo success_mail.vbs 
pause) || FINDSTR "RC (return code) = 0" && (ECHO Deployment was successful. 
cscript //nologo fail_mail.vbs 
pause) 

. 어떤 도움을 주시면 감사하겠습니다. 그것이 작동하지 않는 경우,

ECHO Checking the log file for errors... 
    FINDSTR /C:"Open failed" some_Log.txt some_Log.txt && (
    ECHO Deployment FAILED. 
    cscript //nologo fail_mail.vbs 
    GOTO offshore) || (
     FINDSTR /C:"RC (return code) = 0" some_Log.txt && (
     ECHO Deployment was successful. 
     cscript //nologo success_mail.vbs 
     GOTO offshore) 
    ) 

그리고 다음은

내가 내 최근 한 모습입니다. 오류가 있습니까? 미리 감사드립니다.

+0

Windows 배치 또는 다른 배치? 지금까지 뭐 해봤 어? – LittleBobbyTables

+0

당신이 이미 시도한 코드를 게시하십시오 – Squazic

+0

이 바보는 내게 내 물건에 대답하도록 내버려 두지 않습니다. 그것은 너무 많은 규칙을 가지고 있습니다. 말이되지 않습니다. 내가 지금이 코멘트 영역에있는 것을 넣으면 솔직히 엉망진창을 좋아하지 않을 것입니다. – duper

답변

0

몇 가지 잠재적 인 문제가 있습니다.

  • 귀하의 %workDir% 또는 %filenm% 공백이나 특수 문자를 포함 할 수 있습니다. 안전을 위해 아직 값을 입력하지 않은 경우 따옴표로 묶어야합니다.

  • &&|| 연산자를 사용할 때는주의해야합니다. && 이후의 명령이 실패하면 && 이전의 원래 명령이 성공 했음에도 불구하고 스크립트가 || 섹션에 속하게 될 수 있습니다. 메일을 보내려는 CSCRIPT 명령이 걱정됩니다. 오늘이 성공하더라도 미래에 실패 할 수 있으며 논리가 영향을받을 수 있습니다.

  • 두 번째 검색 문자열이 5 가지 검색이 아닌 하나의 구로 사용되는 것으로 추측합니다. 검색 문자열은/C 옵션을 사용하지 않는 한 공백으로 구분됩니다.

  • 입력으로 파일을 제공하지 않았기 때문에 두 번째 FINDSTR이 멈추었으므로 표준 입력에서 데이터를 기다리고 있습니다.

내가 좋아하는 코드를 구성 할 것입니다 그래서

ECHO Checking the log file for errors... 
set "file=%workDir%\%filenm%_DEV_Log.txt" 
set "search1=Error: Open failed because: No such file or directory" 
set "search2=RC (return code) = 0" 
set "err=" 
FINDSTR /C:"%search1%" "%file%" && (set err=1) || (
    FINDSTR /C:"%search2%" "%file%" || set err=1 
) 
if defined err (
    ECHO Deployment FAILED. 
    cscript //nologo success_mail.vbs "%filenm%_ddl_DEV.sql" "%file%" 
    pause 
) else (
    ECHO Deployment was successful. 
    cscript //nologo fail_mail.vbs "%filenm%_ddl_DEV.sql" "%file%" 
    pause 
) 
+0

FINDSTR : FINDSTR을 열 수 없습니다. &&, FINDSTR : err = 1 등을 열 수 없습니다. 감사합니다, @dbenham – duper

+0

@duper - 죄송합니다. 첫 번째 SET 문에서'''가 누락되었습니다. – dbenham

+0

무슨 일이 벌어지고 있는지 잘 모르겠지만, 실패하지 않았더라도 "err"을 1로 설정하고 있습니다.그리고 첫 번째 echo 라인을 생성하고 계속해서 cmd 스크린에 첫 번째 search1 라인을 생성합니다. 로그 파일을 확인하고 "성공"이라고 말했어야합니다. 무슨 일이 일어나고 있는지 모르겠다. 덕분에 – duper

관련 문제