找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 6125|回复: 5

[问题求助] [已解决]vbs如何修改代码,判断满足4个条件之一就执行操作?

[复制链接]
发表于 2025-5-13 08:10:38 | 显示全部楼层 |阅读模式
本帖最后由 ygqiang 于 2025-5-13 16:27 编辑

vbs如何修改代码,判断满足4个条件之一就执行操作?
已解决,见4楼代码

需要:加上多个变量st1、et1,st2、et2,...
如果当前时间满足下面4个条件之一,在st和et之间,或者在st1和et1之间...都执行操作。
st=#07:30#
et=#07:30#

st1=#08:30#
et1=#08:30#

st2=#14:30#
et2=#14:30#

st3=#21:30#
et3=#21:30#
  1. st=#07:30#
  2. et=#07:30#


  3. Set Ws= WScript.CreateObject("WScript.Shell")

  4. Do
  5. If (Time>st And Time <et) Then
  6.         '[说] "啊啊啊啊啊啊啊啊啊啊电脑重启啊啊啊啊啊啊啊啊啊啊"
  7.         ws.Run "shutdown /f /r /t 1", 0,false
  8.         'ws.Run "shutdn-gj.bat"
  9.         WScript.quit
  10. Else
  11.         '[说] " 时间还没到"
  12. End If
  13. Wscript.Sleep 40000 '减少CPU占用 每40秒检测一次
  14. Loop

  15. Function  [说]([内容])
  16.     [说]= ws.popup(vbcrlf&[内容]&vbcrlf,10,"啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊",8+8)
  17. End Function
复制代码
 楼主| 发表于 2025-5-13 10:43:08 | 显示全部楼层
本帖最后由 ygqiang 于 2025-5-13 11:10 编辑

下面代码为啥测试,满足条件,却不执行重启操作?
  1. st=#07:30#
  2. et=#07:30#

  3. st1=#08:30#
  4. et1=#08:30#

  5. st2=#10:40#
  6. et2=#10:40#

  7. st3=#21:30#
  8. et3=#21:30#


  9. Set Ws= WScript.CreateObject("WScript.Shell")

  10. Do
  11. If (Time>=st And Time <=et) Then
  12.         '[说] "啊啊啊啊啊啊啊啊啊啊电脑重启啊啊啊啊啊啊啊啊啊啊"
  13.         ws.Run "shutdown /f /r /t 1", 0,false
  14.         'ws.Run "shutdn-gj.bat"
  15.         WScript.quit
  16. ElseIf (Time>=st1 And Time <=et1) Then
  17.         '[说] "啊啊啊啊啊啊啊啊啊啊电脑重启啊啊啊啊啊啊啊啊啊啊"
  18.         ws.Run "shutdown /f /r /t 1", 0,false
  19.         'ws.Run "shutdn-gj.bat"
  20.         WScript.quit
  21. ElseIf (Time>=st2 And Time <=et2) Then
  22.         '[说] "啊啊啊啊啊啊啊啊啊啊电脑重启啊啊啊啊啊啊啊啊啊啊"
  23.         ws.Run "shutdown /f /r /t 1", 0,false
  24.         'ws.Run "shutdn-gj.bat"
  25.         WScript.quit
  26. ElseIf (Time>=st3 And Time <=et3) Then
  27.         '[说] "啊啊啊啊啊啊啊啊啊啊电脑重启啊啊啊啊啊啊啊啊啊啊"
  28.         ws.Run "shutdown /f /r /t 1", 0,false
  29.         'ws.Run "shutdn-gj.bat"
  30.         WScript.quit
  31. Else
  32.         '[说] " 时间还没到"
  33. End If
  34. Wscript.Sleep 40000 '减少CPU占用 每40秒检测一次
  35. Loop

  36. Function  [说]([内容])
  37.     [说]= ws.popup(vbcrlf&[内容]&vbcrlf,10,"啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊",8+8)
  38. End Function
复制代码
发表于 2025-5-13 15:04:11 | 显示全部楼层
回复 2# ygqiang

st 与 et 是同值,没有时差,当然被 if 比对结果恒为 false 了...
另:4个逻辑判断可用 or 连接,示例代码如下

  1. If ( Time>=st And Time <=et or Time>=st1 And Time <=et1 or Time>=st2 And Time <=et2 or Time>=st3 And Time <=et3 ) Then
  2.    wsh.echo "重启"
  3. Else
  4.    wsh.echo "时间未到"
  5. end if
复制代码
 楼主| 发表于 2025-5-13 16:25:23 | 显示全部楼层
回复 3# aloha20200628


    谢谢。下面代码测试通过。
  1. st=#07:29#
  2. et=#07:30#

  3. st1=#08:29#
  4. et1=#08:30#

  5. st2=#14:29#
  6. et2=#14:30#

  7. st3=#20:29#
  8. et3=#20:30#


  9. Set Ws= WScript.CreateObject("WScript.Shell")

  10. Do
  11. If (Time>st And Time <et) Then
  12.         '[说] "啊啊啊啊啊啊啊啊啊啊电脑重启啊啊啊啊啊啊啊啊啊啊"
  13.         ws.Run "shutdown /f /r /t 1", 0,false
  14.         'ws.Run "shutdn-gj.bat"
  15.         WScript.quit
  16. ElseIf (Time>st1 And Time <et1) Then
  17.         '[说] "啊啊啊啊啊啊啊啊啊啊电脑重启啊啊啊啊啊啊啊啊啊啊"
  18.         ws.Run "shutdown /f /r /t 1", 0,false
  19.         'ws.Run "shutdn-gj.bat"
  20.         WScript.quit
  21. ElseIf (Time>st2 And Time <et2) Then
  22.         '[说] "啊啊啊啊啊啊啊啊啊啊电脑重启啊啊啊啊啊啊啊啊啊啊"
  23.         ws.Run "shutdown /f /r /t 1", 0,false
  24.         'ws.Run "shutdn-gj.bat"
  25.         WScript.quit
  26. ElseIf (Time>st3 And Time <et3) Then
  27.         '[说] "啊啊啊啊啊啊啊啊啊啊电脑重启啊啊啊啊啊啊啊啊啊啊"
  28.         ws.Run "shutdown /f /r /t 1", 0,false
  29.         'ws.Run "shutdn-gj.bat"
  30.         WScript.quit
  31. Else
  32.         '[说] " 时间还没到"
  33. End If
  34. Wscript.Sleep 40000 '减少CPU占用 每40秒检测一次
  35. Loop

  36. Function  [说]([内容])
  37.     [说]= ws.popup(vbcrlf&[内容]&vbcrlf,10,"啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊",8+8)
  38. End Function
复制代码
发表于 2025-5-13 22:10:22 | 显示全部楼层
st1、et1,st2、et2都是相同的 ,Time是获取当前时间 ,获取是需要时间的 ,比较也是需要时间的 ,每次获取或比较之后的Time理论上都跟之前不同 ,基本是不可能满足条件的 ,再加上还有40秒的延迟 ,更加不可能了
还有4楼代码一旦不满足就会进入延迟 ,延迟过程中时间就可能会错过了 ,一旦错过了基本上也不会满足条件
 楼主| 发表于 2025-5-14 08:40:34 | 显示全部楼层
回复 5# Five66


    实际测试,4楼代码可以满足需求。定时重启
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 20:39 , Processed in 0.018861 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表