Подтвердить что ты не робот

Как установить задержку в vbscript

Как установить задержку в vbscript?

WScript.Sleep(100) не работает в Windows XP, Vista.

4b9b3361

Ответ 1

Работайте с этой целью (XP).

Создайте новый файл, назовите его test.vbs. Поместите это в него.

WScript.Sleep 1000
MsgBox "TEST"

Запустите его, обратите внимание на задержку до появления окна сообщения.

Обратите внимание, что номер находится в миллисекундах, поэтому 1000 составляет 1 секунду.

Ответ 2

Если вы пытаетесь моделировать задержку сна в VBScript, но WScript недоступен (например: ваш script вызывается из инструмента Microsoft BGInfo), попробуйте следующий подход.

Пример ниже будет задерживаться до 10 секунд с момента обработки команды:

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

Ответ 3

если это VBScript, это должно быть

WScript.Sleep 100

Если это JavaScript

WScript.Sleep(100);

Время в миллисекундах. WScript.Sleep 1000 приводит к 1-секундному сну.

Ответ 4

Следующая строка сделает ваш script спать в течение 5 минут.

WScript.Sleep 5*60*1000

Обратите внимание, что значение, переданное во время сна, составляет миллисекунды.

Ответ 5

Здесь другая альтернатива:

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 

Ответ 6

Многие ответы здесь предполагают, что вы используете свой VBScript в Windows Scripting Host (обычно wscript.exe или cscript.exe). Если вы получаете ошибки, такие как "Переменная" undefined: "WScript", то вы, вероятно, нет.

Объект WScript доступен только в том случае, если вы работаете под Windows Scripting Host, если вы работаете под другим хостом script, таким как Internet Explorer (и вы, возможно, не понимаете его, если находитесь в чем-то как HTA), он не доступен автоматически.

Microsoft Эй, сценарист! В блоге есть статья, которая касается именно этой темы Как временно приостановить script в HTA?, в которой они используют VBScript setTimeout создать таймер для имитации спящего режима без необходимости использовать петли для зависания процессора и т.д.

Используемый код:

<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>

См. связанное сообщение в блоге для полного объяснения, но по сути, когда кнопка нажата, создается таймер, который запускает 5000 миллисекунд, и когда он срабатывает, запускается подпрограмма VBScript под названием "PausedSection", которая очищает таймер и запускает любой код, который вы хотите.

Ответ 7

Время ожидания Функция находится в миллисекундах (мс)

если вы хотите 3 минуты, вот как это сделать:

WScript.Sleep(1000 * 60 * 3)

Ответ 8

Ниже приведено обновление решения, предоставленного @user235218, которое позволяет указать количество требуемых миллисекунд.

Примечание. Параметр -n - это количество повторений, а -w - тайм-аут в миллисекундах для пинга. Я выбрал адрес 127.255.255.254, потому что он находится в диапазоне loopback, и ms-окна не реагируют на него.

Я также сомневаюсь, что это обеспечит миллисекундную точность, но в другой заметке я попробовал ее в приложении с помощью управления ms script, а встроенная функция сна заблокировала интерфейс, который этот метод не сделал.

Если кто-нибудь может объяснить, почему этот метод не заблокировал интерфейс, мы могли бы сделать этот ответ более полным. Обе функции сна, которые выполняются в пользовательском потоке.

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

Ответ 9

лучший таймер использования:

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

Ответ 10

Вот мое решение. Работал с script, который запускался сторонней программой без объявления WScript и не разрешен импорт.

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

Обновить
Похоже, Microsoft удалил Sleep.exe из win 8, так что это не работает в win 8, если вы не поставили Sleep.exe в папку, определенную в% path%.