Frage

Derzeit WScript erscheint Meldungsfeld, wenn ein Skriptfehler ist. Diese Skripte werden von anderen Prozessen genannt, und auf einem Server ausgeführt, so dass es niemand den Fehler Feld zu schließen.

Was ich möchte, ist, dass die Fehlermeldung zu STDOUT abgeladen werden, und die Ausführung des Anrufprozess zurückzukehren. Popping als MSGBOX hängt nur die ganze Sache.

Ideen?

War es hilfreich?

Lösung

Dies ist, wie sollten Sie Script Batch-Jobs ausgeführt werden:

cscript //b scriptname.vbs

Andere Tipps

Verwenden Sie WScript nicht; verwenden CScript. Auf der Windows-Eingabeaufforderung geben Sie die folgende Hilfe angezeigt werden soll.

cscript //?
Ich schlage vor, die folgenden:
cscript //H:CScript
Dies wird CScript Ihre Standard-Skriptinterpreter machen. CScript druckt Nachrichten an die Konsole (das heißt, stdout) wie Sie wünschen. (Es verwendet keine Dialogfenster.) Sie können auch die // B-Schalter versuchen wollen, aber ich kann nicht sagen, ob die pro-Skript ausgeführt werden muss oder nicht. Wenn es sich um einen persistenten, einmalige Schalter wie der // H-Schalter, dann für Sie, dies funktionieren kann; wenn nicht, müssen Sie alle Ihre Remote-Programme ändern, um es zu schließen. Von den von Ihnen bereitgestellten Informationen, denken ändern wir nur das Standard-Interpreter (// H) wird tun, was Sie wollen.

Sie müssen auch eine Art von Fehlern hinzufügen Umgang mit dem Skript zu halten auf einem Fehler von beendet wird. In Visual Basic Scripting Edition zu tun, die einfachste Sache, wenn man nur Fehler ignorieren soll die folgende an die Spitze des Skripts hinzuzufügen.

On Error Resume Next
Siehe http://msdn.microsoft.com/en- us / library / 53f3k80h (VS.85) aspx für weitere Informationen.

Verwenden WScript.Echo statt MsgBox. Und führen Sie das Skript mit CSCRIPT statt WSCRIPT.

Sie haben nicht angegeben, welche Sprache Sie verwenden. Wenn Sie VBScript verwenden, können Sie einen Fehlerhandler mit der On Error ... Aussage. Wenn Sie JScript verwenden, können Sie eine try {} catch (x) {} Block.

dies nicht tun:

Vbscript: On Error Resume Next

Englisch: „Wenn Sie einen Fehler haben, ignorieren und einfach weitermachen.“

Ich schlage vor, Sie Ihren Skript-Code in einer Sub setzen - zum Beispiel DoWork - und Code-Skript so etwas wie:

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

Auf diese Weise, wenn Sie Ihr Skript mit cscript //b laufen, und es fehlschlägt, wird eine Fehlermeldung ausgegeben, um stderr zu erhalten, und der Anrufer wird eine von Null verschiedene Errorlevel erhalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top