문제

현재 WScript는 스크립트 오류가 있을 때 메시지 상자를 팝업합니다.이러한 스크립트는 다른 프로세스에서 호출되고 서버에서 실행되므로 오류 상자를 닫을 수 있는 사람이 없습니다.

내가 원하는 것은 오류 메시지가 STDOUT에 덤프되고 실행이 호출 프로세스를 반환하는 것입니다.MSGBox로 터뜨리면 전체가 중단됩니다.

아이디어?

도움이 되었습니까?

해결책

스크립트 일괄 작업을 실행하는 방법은 다음과 같습니다.

cscript //b scriptname.vbs

다른 팁

WScript를 사용하지 마십시오.CScript를 사용하세요.Windows 명령 프롬프트에서 다음을 입력하여 도움말을 표시합니다.

cscript //?
나는 다음을 제안합니다:
cscript //H:CScript
그러면 CScript가 기본 스크립팅 인터프리터가 됩니다.CScript는 원하는 대로 메시지를 콘솔(즉, stdout)에 인쇄합니다.(대화 상자 Wind//H 스위치와 같이 지속적인 일회성 스위치인 경우 이 스위치가 적합할 수 있습니다.그렇지 않은 경우 이를 포함하도록 모든 원격 프로그램을 수정해야 할 수도 있습니다.제공하신 정보에 따르면 기본 인터프리터(//H)만 변경하면 원하는 대로 작동할 것 같습니다.

또한 오류로 인해 스크립트가 종료되지 않도록 일종의 오류 처리 기능을 추가해야 합니다.Visual Basic Scripting Edition에서 오류를 무시하려는 경우 가장 쉬운 방법은 스크립트 맨 위에 다음을 추가하는 것입니다.

On Error Resume Next
보다 http://msdn.microsoft.com/en-us/library/53f3k80h(VS.85).aspx 자세한 내용은.

MsgBox 대신 WScript.Echo를 사용하세요.그리고 WSCRIPT 대신 CSCRIPT를 사용하여 스크립트를 실행하세요.

어떤 언어를 사용하고 있는지 명시하지 않았습니다.VBScript를 사용하는 경우 다음을 사용하여 오류 처리기를 작성할 수 있습니다. 오류 발생 시... 성명.JScript를 사용하는 경우 다음을 사용할 수 있습니다. {} catch(x) {}를 시도해 보세요. 차단하다.

이러지 마세요:

VB스크립트:오류 발생 시 다음 재개

영어:"오류가 발생하면 무시하고 계속 진행하세요."

스크립트 코드를 하위에 넣는 것이 좋습니다. DoWork - 다음과 같이 스크립트를 코딩합니다.

On Error Resume Next

DoWork

If Err.Number <> 0 Then

    If "CSCRIPT.EXE" = UCase( Right( WScript.Fullname, 11 ) ) Then
        WScript.StdErr.Write Err.Number & ": " & Err.Description
    Else
        WScript.Echo Err.Number & ": " & Err.Description
    End If
    WScript.Quit 1
End If

Private Sub DoWork

    ... your code ...

End Sub

이런 식으로 다음을 사용하여 스크립트를 실행할 때 cscript //b, 실패하면 stderr에 오류 메시지가 출력되고 호출자는 0이 아닌 오류 수준을 받게 됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top