【问题标题】:VBscript loop - Tell time every 15 minutesVBscript 循环 - 每 15 分钟告诉一次时间
【发布时间】:2017-06-30 10:49:10
【问题描述】:

我只想要一个可以双击的文件,让 Windows 每 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 显示“现在是 51”。为什么它将 5:01 解释为 50 加 1?早些时候我在 4:32 测试它时,它说“四百三十二”。我希望它以正常的 12 小时方式显示时间。

【问题讨论】:

  • 如果您想通过双击启动它并让它每十五分钟发言一次,请忘记 Windows 调度程序。下面是如何让 VBScript 定期执行某项操作的示例:stackoverflow.com/questions/25009516/…。查看您链接到的站点,语音文本实际上是5 oclock。语音文本不是5:00。所以我猜SAPI不会以这种方式识别时间。您需要自己生成文本。如果您将小时和分钟分开,这将非常简单:即553 而不是5:53
  • @Nick.McDermaid VBScript 与 VBA 不同,VBScript 中有一个Application.OnTime 事件处理程序。
  • 哦,是的,你是对的。我没有意识到这是 VBA

标签: windows vbscript windows-10 scheduled-tasks


【解决方案1】:

这会持续 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

【讨论】:

    猜你喜欢
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    • 2011-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多