CScript/WScript 오류가 차단되는 것을 방지
-
01-07-2019 - |
문제
현재 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이 아닌 오류 수준을 받게 됩니다.