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

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

[复制链接]
发表于 2016-10-8 12:08:38 | 显示全部楼层 |阅读模式
[已解决]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月的第三周周一,夏季时间开始。。。。

评分

参与人数 1PB -30 收起 理由
pcl_test -30 重复发帖

查看全部评分

发表于 2016-10-8 12:20:22 | 显示全部楼层
任务计划本来就可以设置就这个时间段,非要自己找虐。
发表于 2016-10-8 12:28:35 | 显示全部楼层
数学不好,我闪了
 楼主| 发表于 2016-10-8 12:31:50 | 显示全部楼层
回复 3# codegay


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

判断依据如下
夏季时间:4月的第三周周一 ---10月的第二周周日
冬季时间:10月的第三周周一 --次年4月的第二周周日
发表于 2016-10-8 13:18:16 | 显示全部楼层
回复 2# codegay


    难点在于日期计算而不是任务计划
发表于 2016-10-8 15:36:38 | 显示全部楼层
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
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2016-10-8 16:25:45 | 显示全部楼层
本帖最后由 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月,都不是固定的日期。
发表于 2016-10-8 16:30:16 | 显示全部楼层
回复 7# ygqiang
year(now)&"-4"
 楼主| 发表于 2016-10-8 16:31:06 | 显示全部楼层
回复 8# pcl_test


谢谢
发表于 2016-10-8 22:39:15 | 显示全部楼层
回复 8# pcl_test
请问版主:该代码是运后就可以,还是:加到启动项,每次开机运行此vbs?
 楼主| 发表于 2016-10-9 06:34:15 | 显示全部楼层
回复  pcl_test
请问版主:该代码是运后就可以,还是:加到启动项,每次开机运行此vbs?
dnvplj 发表于 2016-10-8 22:39



    加到启动项,每次开机运行此vbs

评分

参与人数 1PB -30 收起 理由
pcl_test -30 指定回应某楼层的在相应楼层点回复,少引用

查看全部评分

发表于 2016-10-9 13:15:30 | 显示全部楼层
谢谢11楼朋友的回复,明白。
 楼主| 发表于 2017-4-10 17:37:15 | 显示全部楼层

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
复制代码

评分

参与人数 1PB -4 收起 理由
pcl_test -4 重复发帖

查看全部评分

发表于 2017-4-10 19:12:43 | 显示全部楼层
4月10号还在上一年的冬季时间:10月的第三周周一 ---次年4月的第二周周日
 楼主| 发表于 2017-4-10 19:23:22 | 显示全部楼层
本帖最后由 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月第三周周一
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 13:28 , Processed in 0.024509 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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