vbscript - operator - CScript/WScript Evita que un error sea bloqueado
vbscript en chrome (6)
No ha indicado qué idioma está usando. Si está utilizando VBScript, puede escribir un controlador de errores usando la instrucción On Error .... Si está utilizando JScript, puede usar un bloque try {} catch (x) {} .
Actualmente, WScript muestra el cuadro de mensaje cuando hay un error de script. Estos scripts son llamados por otros procesos y se ejecutan en un servidor, por lo que no hay nadie para descartar el cuadro de error.
Lo que me gustaría es que el mensaje de error se descargue a STDOUT, y la ejecución devuelva el proceso de llamada. Apareciendo como un MSGBox simplemente cuelga todo.
Ideas?
No use WScript; usa CScript En el símbolo del sistema de Windows, escriba lo siguiente para mostrar la ayuda.
cscript //?
Sugiero lo siguiente:
cscript //H:CScript
Esto hará de CScript su intérprete de scripting predeterminado. CScript imprime mensajes en la consola (es decir, stdout) como lo desee. (No usa ventanas de diálogo.) También puede probar el modificador // B, pero no puedo decir si debe ejecutarse por script o no. Si se trata de un cambio persistente y único como el interruptor // H, entonces esto puede funcionar para usted; si no, puede necesitar modificar todos sus programas remotos para incluirlo. A partir de la información que proporcionó, creo que solo cambiar el intérprete predeterminado (// H) hará lo que quiera.
También necesitará agregar algún tipo de manejo de errores para evitar que la secuencia de comandos termine en un error. En Visual Basic Scripting Edition, lo más fácil de hacer si solo desea ignorar errores es agregar lo siguiente a la parte superior de su script.
On Error Resume Next
Consulte http://msdn.microsoft.com/en-us/library/53f3k80h(VS.85).aspx para obtener más información.
Use WScript.Echo en lugar de MsgBox. Y ejecute el script usando CSCRIPT en lugar de WSCRIPT.
no hagas esto
vbscript: en error reanudar siguiente
inglés: "cuando tienes un error, ignóralo y sigue adelante".
Así es como debería ejecutar trabajos por lotes de scripts:
cscript //b scriptname.vbs
Le sugiero que coloque el código de secuencia de comandos en un Sub - por ejemplo, DoWork
- y codifique su secuencia de comandos algo así 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, cuando ejecuta el script usando cscript //b
, y falla, obtendrá un mensaje de error que se enviará a stderr y el llamante recibirá un nivel de error distinto de cero.