标题: [问题求助] 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- d1=year(now) & right("0"&month(now),2) & right("0"&day(now),2)
- d2=getday("2016-4",3,1) '年月,第几周,星期几
- d3=getday("2016-10",2,7)
- If d1 >=d2 and d1 <=d3 Then
- msgbox "每天下午5:55,自动关机"
- Else
- msgbox "每天下午5:25,自动关机"
- End If
-
-
- Function getday(ym,w,ww)
- For i=0 To 6
- d=dateadd("d",w*7-1,ym)-i
- If weekday(d,2) = ww Then
- getday=year(d) & right("0"&month(d),2) & right("0"&day(d),2)
- End If
- Next
- 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月的第二周周日- On Error Resume next
-
- Set ws = CreateObject("Wscript.Shell")
-
- d1=year(now) & right("0"&month(now),2) & right("0"&day(now),2)
- d2=getday(year(now)&"-4",3,1) '年月,第几周,星期几
- d3=getday(year(now)&"-10",2,7)
- If d1 >=d2 and d1 <=d3 Then
- ws.run "c:\z-jxia.bat"
- Else
- ws.run "c:\z-jdon.bat"
- End If
-
-
-
- Function getday(ym,w,ww)
- For i=0 To 6
- d=dateadd("d",w*7-1,ym)-i
- If weekday(d,2) = ww Then
- getday=year(d) & right("0"&month(d),2) & right("0"&day(d),2)
- End If
- Next
- 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 |