标题: [问题求助] [已解决]求助vbs代码改写:实现判断当前是否在指定时间段,并做不同操作。 [打印本页]
作者: ygqiang 时间: 2016-1-31 11:33 标题: [已解决]求助vbs代码改写:实现判断当前是否在指定时间段,并做不同操作。
本帖最后由 ygqiang 于 2016-3-11 12:33 编辑
[已解决]vbs:11点45这个时刻自动关机。修改成:如果处于某个时间段,过5分钟后就自动关机。
比如,昨天晚上11点45,到今天凌晨5点55这个时间段。
vbs脚本一运行就间隔40秒,循环1次做时间判断,
如果是在这个时间段内,就弹出窗口提示,并马上延时5分钟自动关机。- Option Explicit
-
- '定义常量,在这里设置关机时间
- Const ObjHour = 11 '时 0-23
- Const ObjMinute = 45 '分 0-59
- Const ObjSecond = 00 '秒 0-59
-
- '检查输入是否合法
- Dim IsInputLegal
- IsInputLegal = True
- If ObjHour < 0 Or ObjHour > 23 Then
- IsInputLegal = False
- End If
- If ObjMinute < 0 Or ObjMinute > 59 Then
- IsInputLegal = False
- End If
- If ObjSecond < 0 Or ObjSecond > 59 Then
- IsInputLegal = False
- End If
- If IsInputLegal = False Then
- WScript.Echo "输入非法 时区间:[0-23] 分区间:[0,59] 秒区间:[0,59]"
- WScript.Quit
- End If
-
- '定义变量
- Dim ObjTime '目标时间
- Dim CurTime '当前时间
- Dim CurHour '当前时
- Dim CurMinute '当前分
- Dim CurSecond '当前秒
-
- ObjTime = "指定关机时间:" & ObjHour & "时 " & ObjMinute & "分 " & ObjSecond & "秒"
-
- Dim IsTimeOut
- IsTimeOut = False
-
- '时间到则终止循环
- Do Until IsTimeOut = True
-
- CurHour = Hour(Now)
- CurMinute = Minute(Now)
- CurSecond = Second(Now)
-
- CurTime = "当前时间:" & CurHour & "时 " & CurMinute & "分 " & CurSecond & "秒"
- 'WScript.Echo ObjTime & " | " & CurTime
-
- If (CurHour = objHour And CurMinute = objMinute And CurSecond = objSecond) Or _
- (Hour(Now) = objHour And Minute(Now) = objMinute And Second(Now) = objSecond+1) Then
- IsTimeOut = True
- End If
-
- WScript.Sleep(1000)
-
- Loop
-
- WScript.CreateObject("wscript.shell").Run "shutdown -s -t 300", 0
- 'WScript.Echo vbCrlf
- WScript.Echo "收拾收拾准备睡觉啦!5分钟后我会把你的电脑关掉哦~~~"
- 'WScript.Echo "在控制台输入命令 shutdown -a 可以取消关机计划"
- 'WScript.Echo vbCrlf
复制代码
作者: ygqiang 时间: 2016-1-31 14:33
本帖最后由 ygqiang 于 2016-3-21 12:32 编辑
初步解决了....- st=#23:45#
- et=#05:45#
-
- Set Ws= WScript.CreateObject("WScript.Shell")
-
- Do
- If (Time>st And Time<#23:59:59#) Or (Time>#0:00# And Time <et) Then
- [说] "收拾收拾准备睡觉啦!5分钟后我会把你的电脑关掉哦!!!"
- ws.Run "shutdown /f /s /t 300", 0,false
- WScript.quit
- Else
- '[说] " 时间还没到"
- End If
- Wscript.Sleep 40000 '减少CPU占用 每40秒检测一次
- Loop
-
- Function [说]([内容])
- [说]= ws.popup(vbcrlf&[内容]&vbcrlf,10,"妈妈咪妈妈咪妈妈咪妈妈咪妈妈咪妈妈咪妈妈咪妈妈咪妈妈咪妈妈咪",8+8)
- End Function
复制代码
- statime=#23:35#
- endtime=#05:35#
- sameday = true
- if statime>endtime then sameday = false
- Set Ws= WScript.CreateObject("WScript.Shell")
-
- Do
-
- ringtime = false
- if sameday = true and Time>statime and Time<endtime then
- ringtime = true
- else if sameday = false and (Time>statime or Time<endtime) then
- ringtime = true
- else
- '[说] "哈哈"
- end if
- end if
-
- if ringtime = true then
- [说] "收拾收拾准备睡觉啦!5分钟后我会把你的电脑关掉哦!!!"
- ws.Run "shutdown /f /s /t 30", 0,false
- wscript.quit
- Else
- '[说] "时间还没到"
- End If
- Wscript.Sleep 40000 '减少CPU占用 每40秒检测一次
-
- Loop
-
-
- Function [说]([内容])
- set [wscr]=wscript.createObject("wscript.shell")
- [说]= [wscr].popup(vbcrlf&[内容]&vbcrlf,10,"妈妈咪妈妈咪妈妈咪妈妈咪妈妈咪妈妈咪妈妈咪妈妈咪妈妈咪妈妈咪",8+8)
- End Function
复制代码
作者: ygqiang 时间: 2016-1-31 18:09
本帖最后由 ygqiang 于 2016-3-21 12:33 编辑
另一个vbs解决代码.....- Do
- dtmStaDate1 =date()&" 23:35:00"
- dtmStaDate2 =date()&" 23:59:00"
-
- dtmEndDate1 = date()&" 00:00:00"
- dtmEndDate2 = date()&" 05:35:00"
-
- call time_add(dtmStaDate1,dtmStaDate2)
- call time_add(dtmEndDate1,dtmEndDate2)
-
- WScript.Sleep 40000
- '循环40秒判断
- Loop
-
- function time_add(ActionTime1,ActionTime2)
- [时光流逝1]=DateDiff("s", Now, ActionTime1)
- [时光流逝2]=DateDiff("s", Now, ActionTime2)
- If [时光流逝1] < 0 and [时光流逝2] > 0 Then ' [时光流逝] 表示时间过去了那么多秒 :正数是还要等待。负数是已经到了未来指定时间
- [说] "收拾收拾准备睡觉啦!5分钟后我会把你的电脑关掉哦~~~"
- WScript.CreateObject("wscript.shell").Run "shutdown /f /s /t 300", 0,false
- wscript.quit
- Else
- '[说] " 时间还没到"
- End If
- end function
-
-
- Function [说]([内容])
- set [wscr]=wscript.createObject("wscript.shell")
- [说]= [wscr].popup(vbcrlf&[内容]&vbcrlf,10,"妈妈咪妈妈咪妈妈咪妈妈咪妈妈咪妈妈咪妈妈咪妈妈咪妈妈咪妈妈咪",8+8)
- End Function
复制代码
作者: ivor 时间: 2016-3-11 15:41
回复 3# ygqiang
作者: ygqiang 时间: 2016-3-11 17:22
回复 4# ivor
经过测试,一样也是可用的。
不点弹出的信息框,也会自动关机
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |