2017-02-12 3 views
0

Я просто хочу файл, который я могу дважды щелкнуть, и у Windows вербально скажу мне время каждые 15 минут. (Пока я не убить процесс)VBscript loop - рассказать время каждые 15 минут

Я нашел этот учебник для VBscript, что говорит время каждый час, на час: https://www.nextofwindows.com/windows-trick-how-to-make-your-computer-to-speak-out-time-at-every-hour

Я не мог получить планировщик Windows, работать с ним для моих целей (начинайте только при двойном щелчке и запускайте каждые 15 минут), и, честно говоря, я просто хочу, чтобы 15-минутный цикл был запрограммирован в самом скрипте. (Возможно, используя петлю Do/While и Sleep()?)

Другой вопрос:

Я пытался добавить переменную минут так Windows, объявит минуты, а также:

Dim speaks, speech 
speaks = “It is ” & hour(time) & minute(time) 
Set speech = CreateObject(“sapi.spvoice”) 
speech.Speak speaks 

Тем не менее, объявляет это время в нечетном формате. Например, в настоящее время 5:01 утра, и когда я запускаю сценарий, Windows говорит: «Это пятьдесят один». Почему он интерпретирует 5:01 как пятьдесят плюс один? Раньше, когда я тестировал его в 4:32, он сказал «четыреста тридцать два». Мне хотелось бы просто указать время в обычном 12-часовом режиме.

+0

Если вы хотите запустить его с двойным щелчком и поговорить каждые пятнадцать минут, забудьте о планировщике окон. Вот пример того, как вы делаете VBScript что-то в основное время: http://stackoverflow.com/questions/25009516/vba-excel-conditional-message-box-popup-every-2-minutes-from-now. Глядя на сайт, с которым вы связались, речевой текст на самом деле '5 oclock'. Речевой текст не '5: 00'. Поэтому я считаю, что SAPI не распознает время таким образом. Вам нужно сгенерировать текст самостоятельно. Это было бы довольно тривиально, если бы вы разделили час и минуты: т.е. '5' и' 53' вместо '5: 53' –

+1

@ Nick.McDermaid VBScript - это не то же самое, что VBA, есть один' Application.OnTime' обработчик событий в VBScript. – Lankymart

+0

О да, вы правы. Я не понимал, что это VBA –

ответ

3

Это 5 секунд. Итак, 60 x 15 = 900.

Вам нужны пробелы между номерами, если вы хотите, чтобы они разобрались как отдельные номера.

Set speech = CreateObject("sapi.spvoice") 
Do 
    If Hour(Now) < 12 then 
     Var = Hour(Now) & " AM" 
    else 
     Var = Hour(Now) - 12 & " PM" 
    End If 

    speech.Speak Var & " and " & Minute(Now) & " minutes and " & Second(Now) & " seconds" 
    wscript.sleep 5 
Loop