Board logo

标题: [数值计算] 批处理如何列举/生成两个指定日期之间每天/每一天的日期? [打印本页]

作者: melansky    时间: 2008-4-18 23:04     标题: 批处理如何列举/生成两个指定日期之间每天/每一天的日期?

本帖最后由 pcl_test 于 2016-7-17 23:02 编辑


┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
  论坛管理操作:
  操作人:随风    操作日期:2008-04-18
  原标题: 我不是高手,但经常用批处理做东西,今天遇到个难题,请求帮助
  标题模糊,违反论坛发帖规则、不利于论坛管理、搜索。
  因是论坛新人,暂不予以(扣分)处罚。
  请尽快修改标题,否则将把此帖移到“论坛回收站”
  标题要求:  见以下地址中的 第四条和第八条
  http://bbs.bathome.net/viewthread.php?tid=716
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

做一个生成 “字典.txt” 的批处理,

其中内容为:

从"年(后两位)月(两位)日(两位)"
到"年(后两位)月(两位)日(两位)"
例:
070101
070102
070103
070104
........
080418
6位就可以年两位月两位日两位
是不是递增都行

每一天不能重复

开始的年月日和结未的年月日可以自定义

[ 本帖最后由 melansky 于 2008-4-19 00:02 编辑 ]
作者: 随风    时间: 2008-4-18 23:10

第一、标题于主题内容无关,以属 违规标题,请尽快修改。
第二、不要随便把问题发到  高手挑战区
第三、不要在论坛打广告。
第四、主题内容描述不清,请仔细描述。
作者: 随风    时间: 2008-4-18 23:31

你的意识是这样吗?
生成一个 字典.txt 的文本
其中的内容是每行6个数字,分别代表年月日。
需要生成多少个?
可以重复吗?
必须是从小到大的顺序吗?
必须是递增的方式吗?
作者: melansky    时间: 2008-4-18 23:34

不能重复,只要在这个年限之间就可以,不用按顺序也行。
作者: 随风    时间: 2008-4-18 23:44

需要生成多少个?
需要这个年限之间的每一天吗?
不用按顺序也行,也就是说按顺序也行咯?

楼主对问题能一次描述清楚吗?
你看,还没解答问题,就为了搞清楚你的意识就一问一答这么多回合了,(还不包括短信交流)并不是每个人都有这个耐心的,也许有人早就能解决你的问题,但就因搞不清楚你的意识,而没心思再看你的帖了。
作者: melansky    时间: 2008-4-18 23:49

我是用它生成一个下载列表,网站的东西是有规律的,文件的名字都是年月日形式的。
作者: melansky    时间: 2008-4-18 23:51

按顺序也行
年限之间的每一天
位数只要6位就可以。最主要的是最大和最小值可以自定义
作者: 随风    时间: 2008-4-18 23:57

明白了,应该可以做到,
现在有个最主要的问题是,如何判断平年和闰年,正在发帖求助。
或者楼主知道如何判断么?不是用批处理,关键是我不知道怎么计算。用计算器也不会算。
作者: melansky    时间: 2008-4-19 00:10

暂时还是想不出来怎样算,
第一次的思路是先生成月再生成日组合为一个文件,但是不成功。
第二次是判断位数,但是没做出来
第三次是通过站内的一个师父的“日期修改器”做的,但是机器受不了,而且代码臃肿
如不行,可不考虑年份。因为是下载列表,所以不会要求太严格少个几天没关系,
可是的话是最好不过了,学习吗?思路多点好,我见到站内一师父写的万年历,正在学习,也行有帮助。
我今天从下午4点开始做的,还没吃饭呢,
作者: melansky    时间: 2008-4-19 00:13

  1. set /a a=^(%nian%/100)
  2. set /a b=^(%nian%/400)
  3. set /a c=^(%nian%/4)
  4. set /a a=%nian%-%a%*100
  5. set /a b=%nian%-%b%*400
  6. set /a c=%nian%-%c%*4
  7. set ed=28
  8. if %a% equ 0 (
  9.     if %b% equ 0 set ed=29
  10. ) else (
  11.     if %c% equ 0 set ed=29
  12. )
  13. if %ed% equ 29 echo.&&echo          %nian%年是闰年&&echo.
  14. if %ed% equ 28 echo.&&echo          %nian%年是平年&&echo.
复制代码

作者: melansky    时间: 2008-4-19 00:16

能被4整除,但是不能被400整除的年份不是闰年。比如,2000年是闰年,但是1900年就不是闰年

[ 本帖最后由 melansky 于 2008-4-19 00:19 编辑 ]
作者: 随风    时间: 2008-4-19 01:07

对平年、闰年进行了判断。
  1. @echo off&setlocal enabledelayedexpansion
  2. echo 请输入起始日期 格式:2006-1-20
  3. set /p kai= &cls
  4. echo 请输入结束日期 格式:2008-3-12
  5. set /p wei= &cls
  6. call :lis %kai% xiao
  7. call :lis %wei% da
  8. for /l %%a in (%xiao% 1 %da%) do (
  9.   set sy=%%a
  10.   set /a leap="^!(sy %% 4) & ^!(^!(sy %% 100)) | ^!(sy %% 400)"
  11.   set /a max=28+leap
  12.   if "%%a"=="%wei:~0,4%" (set yuem=!dam!) else set yuem=12
  13.   call :sss
  14. )
  15. echo.&echo 完成。。。
  16. echo.&pause&exit
  17. :sss
  18. for /l %%i in (!xiaom! 1 !yuem!) do (
  19.   call :loop %%i
  20.   for /l %%a in (!xiaod! 1 !ssd!) do (
  21.     set nm=0%%i&set nd=0%%a
  22.     >>字典.txt echo !sy:~-2!!nm:~-2!!nd:~-2!
  23.   )
  24.   set /a xiaod=1
  25. )
  26. set /a xiaom=1
  27. goto :eof
  28. :loop
  29. for /f "tokens=%1" %%i in ("31 !max! 31 30 31 30 31 31 30 31 30 31") do (
  30.    set ssd=%%i
  31. )
  32. if "!sy!-%1"=="%wei:~0,4%-!dam!" (set ssd=!dad!)
  33. goto :eof
  34. :lis
  35. for /f "tokens=1-3 delims=-./ " %%a in ("%~1") do (
  36.   set /a %~2=%%a,%2m=100%%b%%100,%2d=100%%c%%100
  37. )
  38. goto :eof
复制代码

[ 本帖最后由 随风 于 2008-4-19 07:04 编辑 ]
作者: pcl_test    时间: 2016-7-17 23:22

本帖最后由 pcl_test 于 2016-7-17 23:26 编辑
  1. //&cls&mshta "%~f0"|find /v ""&pause&exit
  2. <script language=vbscript>
  3. Set fso = CreateObject("Scripting.Filesystemobject")
  4. date1 = DateValue("2007-01-01")
  5. date2 = DateValue("2008-04-18")
  6. s = FormatDate(date1)
  7. Do Until date1 = date2
  8.     date1 = DateAdd("d", 1 , date1)
  9.     s = s & FormatDate(date1)
  10. Loop
  11. fso.CreateTextFile("字典.txt", 2).Write s
  12. fso.GetStandardStream(1).Write s
  13. Function FormatDate(d)
  14.     FormatDate = right(year(d),2) & right("0" & month(d),2) & right("0" & day(d),2) &vbCrLf
  15. ENd Function
  16. Close()
  17. </script>
复制代码





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