Board logo

标题: [问题求助] VBS如何根据当前是否在指定日期范围内执行不同操作? [打印本页]

作者: ygqiang    时间: 2016-10-8 12:08     标题: VBS如何根据当前是否在指定日期范围内执行不同操作?

[已解决]xp或win7系统,局域网环境(不能连外网),批处理如何判断夏季或者冬季时间段?


夏季或者冬季时间段,判断依据如下:

夏季时间:4月的第三周周一 ---10月的第二周周日
如果在每年这个时间段内,每天下午5:55,自动关机

冬季时间:10月的第三周周一 --次年4月的第二周周日
如果在每年这个时间段内,每天下午5:25,自动关机



以2016年为例,
夏季时间是2016.4.18—2016.10.9,
冬季时间是2016.10.10—2017.4.16(注意这个是2017年)

以2017年为例,
4.1-4.2在一个周内,属于4月第一周
4.3-4.9是4月第二周
4.10是4月的第三周周一,夏季时间开始。。。。
作者: codegay    时间: 2016-10-8 12:20

任务计划本来就可以设置就这个时间段,非要自己找虐。
作者: wskwfkbdn    时间: 2016-10-8 12:28

数学不好,我闪了
作者: ygqiang    时间: 2016-10-8 12:31

回复 3# codegay


    如何智能判断4月份或10月份的某1天,具体属于冬季还是夏季呢?

判断依据如下
夏季时间:4月的第三周周一 ---10月的第二周周日
冬季时间:10月的第三周周一 --次年4月的第二周周日
作者: GNU    时间: 2016-10-8 13:18

回复 2# codegay


    难点在于日期计算而不是任务计划
作者: pcl_test    时间: 2016-10-8 15:36

vbs
  1. d1=year(now) & right("0"&month(now),2) & right("0"&day(now),2)
  2. d2=getday("2016-4",3,1)  '年月,第几周,星期几
  3. d3=getday("2016-10",2,7)
  4. If d1 >=d2 and d1 <=d3 Then
  5.     msgbox "每天下午5:55,自动关机"
  6. Else
  7.     msgbox "每天下午5:25,自动关机"
  8. End If
  9. Function getday(ym,w,ww)
  10.     For i=0 To 6
  11.         d=dateadd("d",w*7-1,ym)-i
  12.         If weekday(d,2) = ww Then
  13.             getday=year(d) & right("0"&month(d),2) & right("0"&day(d),2)
  14.         End If
  15.     Next
  16. End Function
复制代码

作者: ygqiang    时间: 2016-10-8 16:25

本帖最后由 ygqiang 于 2016-10-8 16:27 编辑

回复 6# pcl_test


    多谢。

d2=getday("2016-4",3,1)  '年月,第几周,星期几
d3=getday("2016-10",2,7)

这里的2016不能固定吧?因为以后可能是2017,2018,。。。等等年代。。



夏季时间:4月的第三周周一 ---10月的第二周周日
冬季时间:10月的第三周周一 --次年4月的第二周周日

每年的这个时间段,4月和10月,都不是固定的日期。
作者: pcl_test    时间: 2016-10-8 16:30

回复 7# ygqiang
year(now)&"-4"
作者: ygqiang    时间: 2016-10-8 16:31

回复 8# pcl_test


谢谢
作者: dnvplj    时间: 2016-10-8 22:39

回复 8# pcl_test
请问版主:该代码是运后就可以,还是:加到启动项,每次开机运行此vbs?
作者: ygqiang    时间: 2016-10-9 06:34

回复  pcl_test
请问版主:该代码是运后就可以,还是:加到启动项,每次开机运行此vbs?
dnvplj 发表于 2016-10-8 22:39



    加到启动项,每次开机运行此vbs
作者: dnvplj    时间: 2016-10-9 13:15

谢谢11楼朋友的回复,明白。
作者: ygqiang    时间: 2017-4-10 17:37     标题: vbs如何判断当前日期是否在指定日期范围内

本帖最后由 pcl_test 于 2017-4-10 18:53 编辑

vbs代码小问题,日期范围判断,求教。

比如当前是4月10日,应该运行z-jxia,实际却运行z-jdon


echo 夏季时间:4月的第三周周一 ---10月的第二周周日
echo 冬季时间:10月的第三周周一 ---次年4月的第二周周日
  1. On Error Resume next
  2. Set ws = CreateObject("Wscript.Shell")
  3. d1=year(now) & right("0"&month(now),2) & right("0"&day(now),2)
  4. d2=getday(year(now)&"-4",3,1)  '年月,第几周,星期几
  5. d3=getday(year(now)&"-10",2,7)
  6. If d1 >=d2 and d1 <=d3 Then
  7.     ws.run "c:\z-jxia.bat"
  8. Else
  9.     ws.run "c:\z-jdon.bat"
  10. End If
  11. Function getday(ym,w,ww)
  12.     For i=0 To 6
  13.         d=dateadd("d",w*7-1,ym)-i
  14.         If weekday(d,2) = ww Then
  15.             getday=year(d) & right("0"&month(d),2) & right("0"&day(d),2)
  16.         End If
  17.     Next
  18. End Function
复制代码

作者: pcl_test    时间: 2017-4-10 19:12

4月10号还在上一年的冬季时间:10月的第三周周一 ---次年4月的第二周周日
作者: ygqiang    时间: 2017-4-10 19:23

本帖最后由 ygqiang 于 2017-4-10 19:38 编辑

回复 14# pcl_test


    夏季时间:4月的第三周周一



4月10日明显是这个夏季时间段啊..

4.1-4.2是4月第一周
4.3-4.9是4月第二周
4.10是4月第三周周一




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