vbs operator dim comment chrome and vbscript automation wsh

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.