1

Тема: VBS: Длинный sleep!

Здравствуйте!
Мне нужно запустить скрипт без 5 секунд каждого часа, запускаю планировщиком винды в 59 минут...

В скрипте пишу

wscript.sleep 55000

Но он висит раза в два дольше 55 секунд.

написал так:

wscript.sleep 20000
    wscript.sleep 20000
    wscript.sleep 15000

Вроде стало нормально!!!

Вопрос почему так?:o

2

Re: VBS: Длинный sleep!

bnp322, где сам скрипт, и где задание для Планировщика задач?

3 (изменено: Slav, 2012-06-09 09:58:58)

Re: VBS: Длинный sleep!

bnp322 пишет:

Вопрос почему так?

bnp322,

в аналогичной задаче я столкнулся с тем, что время указанное в Sleep реально может отличаться при выполнении скрипта. Причем, задержка разная и зависит, например, от загрузки компа.
Запуск из планировщика - тоже зависит от многих факторов. Не стоит рассчитывать на то, что если Вы указали запуск в 17.59 - то запуск произойдет в 17.59:00. Может и через 10, 20, 30 секунд.

Поэтому я отказался от этого способа и просто в начале скрипта жду конкретного времени:

' ждем 59 минут 55 секунд
    Do While True
      if (Minute(Now)=59) and (Second(Now) >= 55) then Exit Do
      Wscript.Sleep 1000
    Loop

WScript.Echo "Finish"
WScript.Quit 0

4

Re: VBS: Длинный sleep!

Большое Спасибо!

А скрипт такой:

Set oVoice = CreateObject("SAPI.SpVoice")
set oSpFileStream = CreateObject("SAPI.SpFileStream")
oSpFileStream.Open "c:\Windows\Media\tada.wav"
oVoice.SpeakStream oSpFileStream
oSpFileStream.Close

5

Re: VBS: Длинный sleep!

Можно без планировщика сделать.


Dim THour, TMinute, TSecond

TMinute = 59
TSecond = 55

Set objWMIService = GetObject("winmgmts:"&"{impersonationLevel=impersonate}!\\.\root\cimv2")
Set objEvents = objWMIService.ExecNotificationQuery _
("SELECT * FROM __InstanceModificationEvent WITHIN 1 WHERE " & _
 "TargetInstance ISA 'Win32_LocalTime'" & _ 
 " AND TargetInstance.Minute = "&TMinute&_
 " AND TargetInstance.Second = "&TSecond)
 
While True     
	Set objReceivedEvent = objEvents.NextEvent
	Call ToDo()
Wend 

Sub ToDo()
	' Тут код для выполнения
	WScript.Echo "Hello"
End Sub
В основе всего лежит простота.

6

Re: VBS: Длинный sleep!

Спасибо!
Опробую!:)