经营者突然无法工作

时间:2015-06-07 08:05:29

标签: time vbscript operators

一周前,我写了这个脚本,当你登录然后根据当天的时间问候你时会启动它。今天早上它突然突然说:“时间无效”(如果所有其他elseif选项与时间不匹配,它会这样做)。这曾经工作到今天。

这是我的代码:

Set objShell = CreateObject("WScript.Shell")
ctime = Time()
usr = objShell.ExpandEnvironmentStrings("%username%")
if ctime > "06:00:00" and ctime < "12:00:00" then
    objShell.Popup "Good Morning, " & usr, 5, "", 4096
elseif ctime > "12:00:00" and ctime < "18:00:00" then
    objShell.Popup "Good Afternoon, " & usr, 5, "", 4096
elseif ctime > "18:00:00" and ctime < "23:59:59" then
    objShell.Popup "Good evening, " & usr, 5, "", 4096
elseif ctime > "00:00:00" and ctime < "06:00:00" then
    objShell.Popup "Good night, " & usr, 5, "", 4096
else
    objShell.Popup "Invalid time", 5, "", 4096
end if
编辑:好像它再次有效,现在已经是10点了,但由于某种原因它在10点之前没有用,我想我的代码中仍然有错误?

1 个答案:

答案 0 :(得分:6)

您正在比较 time string 数据子类型的值。 Comparison Operators (VBScript) reference有点不清楚(或关于自动数据子类型转换);我想将时间转换为 string 并使用替代的前导零操作,例如#09:10:12#时间转换为"9:10:12"" 9:10:12"字符串。因此,使用时间文字强制 time 进行比较,方法是将它们用数字符号(#)括起来,例如#06:00:00#而不是"06:00:00"

但是,您的逻辑仍然存在差距:例如#06:00:00##12:00:00##18:00:00#时间不符合任何ifelseif条件,将提供无效时间输出。

因此,而不是

if ctime > "06:00:00" and ctime < "12:00:00" then

使用

if ctime >= #06:00:00# and ctime < #12:00:00# then

if ctime > #06:00:00# and ctime <= #12:00:00# then

并类似地改进所有elseif