Board logo

标题: [问题求助] [已解决]求助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分钟自动关机。
  1. Option Explicit
  2. '定义常量,在这里设置关机时间
  3. Const ObjHour   = 11   '时 0-23
  4. Const ObjMinute = 45   '分 0-59
  5. Const ObjSecond = 00   '秒 0-59
  6. '检查输入是否合法
  7. Dim IsInputLegal
  8. IsInputLegal = True
  9. If ObjHour < 0 Or ObjHour > 23 Then
  10.     IsInputLegal = False
  11. End If
  12. If ObjMinute < 0 Or ObjMinute > 59 Then
  13.     IsInputLegal = False
  14. End If
  15. If ObjSecond < 0 Or ObjSecond > 59 Then
  16.     IsInputLegal = False
  17. End If
  18. If IsInputLegal = False Then
  19.     WScript.Echo "输入非法 时区间:[0-23] 分区间:[0,59] 秒区间:[0,59]"
  20.     WScript.Quit
  21. End If
  22. '定义变量
  23. Dim ObjTime    '目标时间
  24. Dim CurTime    '当前时间
  25. Dim CurHour    '当前时
  26. Dim CurMinute  '当前分
  27. Dim CurSecond  '当前秒
  28. ObjTime = "指定关机时间:" & ObjHour & "时 " & ObjMinute & "分 " & ObjSecond & "秒"
  29. Dim IsTimeOut
  30. IsTimeOut = False
  31. '时间到则终止循环
  32. Do Until IsTimeOut = True
  33.      
  34.     CurHour = Hour(Now)
  35.     CurMinute = Minute(Now)
  36.     CurSecond = Second(Now)
  37.      
  38.     CurTime = "当前时间:" & CurHour & "时 " & CurMinute & "分 " & CurSecond & "秒"
  39.     'WScript.Echo ObjTime & " | " & CurTime
  40.      
  41.     If (CurHour = objHour And CurMinute = objMinute And CurSecond = objSecond) Or _
  42.         (Hour(Now) = objHour And Minute(Now) = objMinute And Second(Now) = objSecond+1) Then
  43.         IsTimeOut = True
  44.     End If
  45.      
  46.     WScript.Sleep(1000)
  47.      
  48. Loop
  49. WScript.CreateObject("wscript.shell").Run "shutdown -s -t 300", 0
  50. 'WScript.Echo vbCrlf
  51. WScript.Echo "收拾收拾准备睡觉啦!5分钟后我会把你的电脑关掉哦~~~"
  52. 'WScript.Echo "在控制台输入命令 shutdown -a 可以取消关机计划"
  53. 'WScript.Echo vbCrlf
复制代码

作者: ygqiang    时间: 2016-1-31 14:33

本帖最后由 ygqiang 于 2016-3-21 12:32 编辑

初步解决了....
  1. st=#23:45#
  2. et=#05:45#
  3. Set Ws= WScript.CreateObject("WScript.Shell")
  4. Do
  5. If (Time>st And Time<#23:59:59#) Or (Time>#0:00# And Time <et) Then
  6. [说] "收拾收拾准备睡觉啦!5分钟后我会把你的电脑关掉哦!!!"
  7. ws.Run "shutdown /f /s /t 300", 0,false
  8. WScript.quit
  9. Else
  10. '[说] " 时间还没到"
  11. End If
  12. Wscript.Sleep 40000 '减少CPU占用 每40秒检测一次
  13. Loop
  14. Function  [说]([内容])
  15.     [说]= ws.popup(vbcrlf&[内容]&vbcrlf,10,"妈妈咪妈妈咪妈妈咪妈妈咪妈妈咪妈妈咪妈妈咪妈妈咪妈妈咪妈妈咪",8+8)
  16. End Function
复制代码
  1. statime=#23:35#
  2. endtime=#05:35#
  3. sameday = true
  4. if statime>endtime then sameday = false
  5. Set Ws= WScript.CreateObject("WScript.Shell")
  6. Do
  7. ringtime = false
  8. if sameday = true and Time>statime and Time<endtime then
  9.   ringtime = true
  10. else if sameday = false and (Time>statime or Time<endtime) then
  11.   ringtime = true
  12. else
  13. '[说] "哈哈"
  14. end if
  15. end if
  16. if ringtime = true then
  17. [说] "收拾收拾准备睡觉啦!5分钟后我会把你的电脑关掉哦!!!"
  18.        ws.Run "shutdown /f /s /t 30", 0,false
  19.        wscript.quit
  20. Else
  21. '[说] "时间还没到"
  22. End If
  23. Wscript.Sleep 40000 '减少CPU占用 每40秒检测一次
  24. Loop
  25. Function  [说]([内容])
  26. set [wscr]=wscript.createObject("wscript.shell")  
  27.     [说]= [wscr].popup(vbcrlf&[内容]&vbcrlf,10,"妈妈咪妈妈咪妈妈咪妈妈咪妈妈咪妈妈咪妈妈咪妈妈咪妈妈咪妈妈咪",8+8)
  28. End Function
复制代码

作者: ygqiang    时间: 2016-1-31 18:09

本帖最后由 ygqiang 于 2016-3-21 12:33 编辑

另一个vbs解决代码.....
  1. Do
  2. dtmStaDate1 =date()&" 23:35:00"
  3. dtmStaDate2 =date()&" 23:59:00"
  4. dtmEndDate1 =  date()&" 00:00:00"
  5. dtmEndDate2 =  date()&" 05:35:00"
  6. call time_add(dtmStaDate1,dtmStaDate2)
  7. call time_add(dtmEndDate1,dtmEndDate2)
  8.   WScript.Sleep 40000
  9. '循环40秒判断
  10. Loop
  11. function time_add(ActionTime1,ActionTime2)
  12. [时光流逝1]=DateDiff("s", Now, ActionTime1)   
  13. [时光流逝2]=DateDiff("s", Now, ActionTime2)  
  14. If  [时光流逝1] < 0 and [时光流逝2] > 0  Then   ' [时光流逝] 表示时间过去了那么多秒 :正数是还要等待。负数是已经到了未来指定时间  
  15.        [说] "收拾收拾准备睡觉啦!5分钟后我会把你的电脑关掉哦~~~"
  16.        WScript.CreateObject("wscript.shell").Run "shutdown /f /s /t 300", 0,false
  17.        wscript.quit
  18. Else
  19.     '[说] " 时间还没到"
  20. End If
  21. end function
  22. Function  [说]([内容])
  23. set [wscr]=wscript.createObject("wscript.shell")  
  24.     [说]= [wscr].popup(vbcrlf&[内容]&vbcrlf,10,"妈妈咪妈妈咪妈妈咪妈妈咪妈妈咪妈妈咪妈妈咪妈妈咪妈妈咪妈妈咪",8+8)
  25. End Function
复制代码

作者: ivor    时间: 2016-3-11 15:41

回复 3# ygqiang


   
缺点如果不点你弹出的信息框,就可以阻止关机

作者: ygqiang    时间: 2016-3-11 17:22

回复 4# ivor


    经过测试,一样也是可用的。

不点弹出的信息框,也会自动关机




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2