gpt4 book ai didi

datetime - VBScript-运行文件的日期和时间约束

转载 作者:行者123 更新时间:2023-12-02 22:57:50 24 4
gpt4 key购买 nike

好的,我是刚开始编写VBScript的人,我想编写仅在特定日期和特定时间之间播放文件(WAV格式)的代码字符串。将在互联网上找到的多个代码片段拼凑在一起后,剩下的内容如下:

Dim myDateString 
Dim thing1
thing1 = 0
myDateString = Date()
If myDateString < "13/08/13" Then
thing1 = 1
end if
if thing1 = 1 then
If myDateString > "15/08/13" Then
thing1 = 2
end if
end if

if thing1 = 2 then

hournow = hour(Time())
If hour(Time()) >= 9 And Hour(Now()) < 22 Then

set WshShell = CreateObject("WScript.Shell")

music = "C:\Users\MYUSERNAME\Desktop\MYSOUND.wav"

WshShell.Run "wmplayer """ & music & """",0,True

Else
wscript.quit 1
End If

Else
wscript.quit 1
End If

好的,所以我已将其设置为在我进入这个小时之内运行的日期。但是
它没有用。我希望VBS开始播放MYSOUND.wav,但事实并非如此。运行文件时
虽然没有错误,所以我想知道自己做错了!

我运行Windows 7

如果有人能告诉我我做错了什么以及如何解决,那将是很棒的。

如果有人可以发布正确版本的代码,请加倍加分!

感谢任何答案!

最佳答案

首先,缩进代码并为变量赋予有意义的名称!

然后,日期比较不起作用,因为您试图将字符串当作日期进行比较。这通常不起作用(取决于您的“系统区域设置”):您需要使用日期类型变量和实际的日期比较功能(VBScript中的DateDiff)。

(编辑:正如Ansgar Wiechers指出的那样,您不需要使用DateDiff在VBScript中比较日期,“DateStart <= Now And Now <= DateEnd”就可以了)

试试这个:

Dim DateStart, DateEnd, WshShell, music

DateStart = DateSerial(2013, 8, 13)
DateEnd = DateSerial(2013, 8, 15)
If DateDiff("D", DateStart, Now) >= 0 And DateDiff("D", Now, DateEnd) >= 0 Then
If Hour(Now) >= 9 And Hour(Now) < 22 Then
'*** delete after debugging ***
MsgBox "play sound"
Set WshShell = CreateObject("WScript.Shell")
music = "C:\Users\MYUSERNAME\Desktop\MYSOUND.wav"
'*** 2nd parameter : 0 hides wmplayer, 1 shows it ***
WshShell.Run "wmplayer """ & music & """", 1, True
Else
'*** delete after debugging ***
MsgBox "Not the right time"
End If
Else
'*** delete after debugging ***
MsgBox "Not the right day"
End If

另外,如果您要调试这样的小脚本,则可以调用MsgBox来简单跟踪实际执行的操作(在您的示例中,用MsgBox替换“WScript.Quit 1”会向您显示日期不正确比较。

关于datetime - VBScript-运行文件的日期和时间约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18228366/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com