Pregunta

En la actualidad, WScript aparece cuadro de mensaje cuando hay un error en el script.Estas secuencias de comandos son llamados por otros procesos, y se ejecutó en un servidor, así que no hay nadie para descartar el cuadro de error.

Lo que me gustaría es que el mensaje de error de dumping a STDOUT, y la ejecución de volver el proceso de llamada.Apareciendo como un MSGBox sólo se bloquea toda la cosa.

Ideas?

¿Fue útil?

Solución

Esta es la forma en que se deben ejecutar secuencias de trabajos por lotes:

cscript //b scriptname.vbs

Otros consejos

No utilizar WScript;uso CScript.En el símbolo del sistema, escriba lo siguiente para mostrar la ayuda.

cscript //?
Sugiero lo siguiente:
cscript //H:CScript
Esto hará que CScript de secuencias de comandos predeterminado intérprete.CScript imprime los mensajes de la consola (es decir, stdout) como usted desea.(No se utilizan ventanas de diálogo.) También puede que desee probar el /interruptor a/B, pero no puedo decir si que tiene que ser ejecutado por guión o no.Si es persistente, un tiempo de cambio como el //H interruptor, entonces este puede trabajar para usted;si no, puede que necesite modificar todos sus programas remotos incluyen.A partir de la información proporcionada, creo que con solo cambiar el valor predeterminado de intérprete (//H) va a hacer lo que quiera.

Usted también tendrá que agregar algún tipo de control de errores para mantener la secuencia de comandos de terminar en un error.En Visual Basic Scripting Edition, la cosa más fácil de hacer si usted sólo quiere ignorar los errores es agregar lo siguiente a la parte superior de la secuencia de comandos.

On Error Resume Next
Ver http://msdn.microsoft.com/en-us/library/53f3k80h(VS.85).aspx para obtener más información.

Uso WScript.Echo en lugar de MsgBox.Y, ejecute la secuencia de comandos mediante CSCRIPT en lugar de WSCRIPT.

Usted no ha declarado qué idioma que está utilizando.Si usted está usando VBScript, puede escribir un controlador de errores utilizando el En Caso De Error... declaración.Si usted está usando JScript, puede utilizar una try {} catch (x) {} el bloque.

no hacer esto:

vbscript:On error resume next

inglés:"cuando tienes un error, haga caso omiso y sólo seguir adelante."

Le sugiero que ponga su código de secuencia de comandos en un Sub - p. ej. DoWork - y el código del script algo como:

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

De esta forma, al ejecutar la secuencia de comandos mediante cscript //b, y no, obtendrá un mensaje de error de salida stderr) y la persona que llama recibirá un no-cero errorlevel.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top