2017-02-12 68 views
0

我只想要一个文件,我可以双击并让Windows每隔15分钟口头告诉我一次。 (直到我杀的过程)VBscript循环 - 每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

如果你想通过双击来启动它并让它每15分钟讲一次,那么应该忘记Windows调度器。下面是一个例子,说明如何让VBScript定期做些事情:http://stackoverflow.com/questions/25009516/vba-excel-conditional-message-box-popup-every-2-minutes-from-now。看看你链接的网站,语音文本实际上是'5点钟'。语音文本不是'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