[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理时间增加N天循环递增

请问 如何才能获得日期递增呢

递增 这个数字 可以自由修改成自己要的数字 比如 2   9   11啊 这样的

如 :递增6    从地一行指定数字开始  输出300行(可自由修改)       按月的哦 .....一月大 31天  二月按年算有时候是28 有时候是29天
获得 1.TXT:
20100102XXX
20100109XXX
20100116XXX
20100123XXX
20100130XXX
20100206XXX


可能有点复杂  ,望帮忙  谢谢大家
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

占位,晚上回来给你解决
---学无止境---

TOP

倒。。。。。。。。。我等。。。。。。。。。。。。。

TOP

不好意思,今晚回来有点晚
  1. '//保存我为new.vbs,然后运行即可
  2. Dim intDays,intLines,strLast,strOut
  3. Dim FirstDate,i,outDate,newDate,f
  4. strLast="XXX" '//此处为日期后面的文本后面
  5. FirstDay=InputBox("请输入第一天,格式为 年-月-日 如"&vbCrLf&"2011-1-1:")
  6. intDays=InputBox("请输入时间间隔(天):")
  7. intLines=InputBox("请输入行数:")
  8. intDays=intDays+1
  9. strOut=FormatDate(FirstDay) & strLast
  10. newDate=DateAdd("d",intDays,FirstDay)
  11. For i=1 To intLines-1
  12. strOut=strOut & vbCrLf & FormatDate(newDate) & strLast
  13. newDate=DateAdd("d",intDays,newDate)
  14. Next
  15. Set f=CreateObject("scripting.filesystemobject").CreateTextFile("1.txt",True)
  16. f.Write strOut
  17. f.Close
  18. MsgBox "保存在当前目录下1.TXT"
  19. Set f=Nothing
  20. '//定义函数判断日期格式
  21. Function FormatDate(strDate)
  22. Dim strYear,strMonth,strDay
  23. strYear=DatePart("yyyy",strDate)
  24. strMonth=FormatNum(DatePart("m",strDate))
  25. strDay=FormatNum(DatePart("d",strDate))
  26. FormatDate=strYear & strMonth & strDay
  27. End Function
  28. '//定义过程判断日期格式2
  29. Function FormatNum(intNum)
  30. If Len(intNum)=1 Then
  31. FormatNum="0" & intNum
  32. Else
  33. FormatNum=intNum
  34. End If
  35. End Function
复制代码
1

评分人数

---学无止境---

TOP

本帖最后由 hanyeguxing 于 2011-4-19 08:19 编辑

例如,输入:2011 4 18 5 300
  1. @echo off&setlocal enabledelayedexpansion
  2. set "name=1.txt"&set/pp=请依次输入开始年 月 日 递增 行数,以空格分隔:
  3. for /f "tokens=1-5" %%a in ("%p%") do set/a Y=%%a,M=%%b,D=%%c,N=%%d,C=%%e
  4. (set M_=0%M%&set D_=0%D%&echo !Y!!M_:~-2!!D_:~-2!
  5. for /l %%a in (2,1,%C%) do (
  6.     set/a D+=N,"K=^!(M-4)|^!(M-6)|^!(M-9)|^!(M-11)","E=^!(M-2)*(28+((^!(Y%%4)&^!^!(Y%%100))|^!(Y%%400)))+K*30+(^!^!(M-2)&^!K)*31"
  7.     if !D! gtr !E! (call:a) else set M_=0!M!&set D_=0!D!&echo !Y!!M_:~-2!!D_:~-2!
  8. ))>"%name%"&exit
  9. :a:溢出运算
  10. set/a D-=E,M+=1,"Y+=^!(M-13)","M-=^!(M-13)*12","K=^!(M-4)|^!(M-6)|^!(M-9)|^!(M-11)","E=^!(M-2)*(28+((^!(Y%%4)&^!^!(Y%%100))|^!(Y%%400)))+K*30+(^!^!(M-2)&^!K)*31"
  11. if %D% gtr %E% goto:a
复制代码
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

4# broly


谢谢2位一个是vbs  一个是bat
   2楼的朋友  代码 正确无误   vbs
  5楼的朋友代码生成的时候少了一行,(2月到3月的,   3月底到4月开始的那行 )           可能是没经过测试吧? bat的
再次感谢2位

TOP

返回列表