español ejemplos vbscript

ejemplos - Cómo configurar el retraso en vbscript



manual vbscript pdf español (10)

¿Cómo configurar el retraso en vbscript?

WScript.Sleep(100) no funciona en Windows XP, Vista.


Aquí está mi solución. Trabajó con el script, que fue ejecutado por un programa de terceros sin WScript declarado y sin importación permitida.

Function MySleep(milliseconds) set WScriptShell = CreateObject("WScript.Shell") WScriptShell.Run "Sleep -m " & milliseconds, 0, true end Function

Actualizar
Parece que Microsoft eliminó Sleep.exe de win 8, así que esto no funciona en win 8 a menos que pongas Sleep.exe en la carpeta definida en% path%.


Aquí hay otra alternativa:

Sub subSleep(strSeconds) '' subSleep(2) Dim objShell Dim strCmd set objShell = CreateObject("wscript.Shell") ''objShell.Run cmdline,1,False strCmd = "%COMSPEC% /c ping -n " & strSeconds & " 127.0.0.1>nul" objShell.Run strCmd,0,1 End Sub


Aquí hay una actualización de la solución provista por @ user235218 que le permite especificar la cantidad de milisegundos que necesita.

Nota: La opción -n es el número de reintentos y la -w es el tiempo de espera en milisegundos para el ping. Elegí la dirección 127.255.255.254 porque está en el rango de bucle invertido y ms windows no responde.

También dudo que esto proporcione una precisión de milisegundos, pero en otra nota lo probé en una aplicación usando el control de script ms y mientras que la función de suspensión incorporada bloqueó la interfaz, este método no lo hizo.

Si alguien puede proporcionar una explicación de por qué este método no bloqueó la interfaz, podríamos hacer que esta respuesta sea más completa. Ambas funciones de suspensión se ejecutan en el hilo del usuario.

Const WshHide = 0 Const WAIT_ON_RETURN = True Sub Sleep(ByVal ms) Dim shell ''As WScript.Shell If Not IsNumeric(ms) Then _ Exit Sub Set shell = CreateObject("WScript.Shell") Call shell.Run("%COMSPEC% /c ping -n 1 -w " & ms & " 127.255.255.254 > nul", WshHide, WAIT_ON_RETURN) End Sub


La función de tiempo de reposo está en milisegundos (ms)

Si quieres 3 minutos, esa es la forma de hacerlo:

WScript.Sleep(1000 * 60 * 3)


La siguiente línea hará que tu script se duerma durante 5 minutos.

WScript.Sleep 5*60*1000

Tenga en cuenta que el valor pasado a la llamada de reposo es en mili segundos.


Muchas de las respuestas aquí suponen que está ejecutando su VBScript en el Windows Scripting Host (generalmente wscript.exe o cscript.exe ). Si está obteniendo errores como ''La variable no está definida: "WScript" '' entonces es probable que no.

El objeto WScript solo está disponible si está ejecutando bajo Windows Scripting Host, si está ejecutando bajo otro host de secuencia de comandos, como Internet Explorer (y podría estar sin darse cuenta si está en algo como una HTA). no está disponible automáticamente.

Hey de Microsoft, chico de scripting! El blog tiene un artículo que trata solo este tema ¿Cómo puedo pausar temporalmente una secuencia de comandos en una HTA? en el que utilizan un setTimeout VBScript para crear un temporizador para simular un modo de espera sin necesidad de utilizar bucles de acumulación de CPU, etc.

El código utilizado es este:

<script language = "VBScript"> Dim dtmStartTime Sub Test dtmStartTime = Now idTimer = window.setTimeout("PausedSection", 5000, "VBScript") End Sub Sub PausedSection Msgbox dtmStartTime & vbCrLf & Now window.clearTimeout(idTimer) End Sub </script> <body> <input id=runbutton type="button" value="Run Button" onClick="Test"> </body>

Vea la publicación del blog vinculado para una explicación completa, pero esencialmente cuando se hace clic en el botón, crea un temporizador que se dispara a 5,000 milisegundos a partir de ahora, y cuando se dispara ejecuta la subrutina de VBScript llamada "PausedSection" que borra el temporizador y ejecuta lo que sea codigo que quieras


Si es VBScript, debería ser

WScript.Sleep 100

Si es javascript

WScript.Sleep(100);

Tiempo en milisegundos. Wscript.Sleep 1000 da como resultado un sueño de 1 segundo.


Si está intentando simular una demora en el modo de espera en VBScript pero WScript no está disponible (p. Ej., Su script se llama desde la herramienta BGInfo de Microsoft), intente el siguiente enfoque.

El siguiente ejemplo demorará hasta 10 segundos desde el momento en que se procesa la instrucción:

Dim dteWait dteWait = DateAdd("s", 10, Now()) Do Until (Now() > dteWait) Loop


Trabaja este extremo (XP).

Crea un nuevo archivo, llámalo test.vbs. Pon esto en esto.

WScript.Sleep 1000 MsgBox "TEST"

Ejecútelo, observe el retraso antes de que se muestre el cuadro de mensaje.

Tenga en cuenta que el número está en milisegundos, por lo que 1000 es 1 segundo.


mejor uso temporizador:

Sub wait (sec) dim temp temp=timer do while timer-temp<sec loop end Sub