标题: [数值计算] 批处理如何列举/生成两个指定日期之间每天/每一天的日期? [打印本页]
作者: 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
- set /a a=^(%nian%/100)
- set /a b=^(%nian%/400)
- set /a c=^(%nian%/4)
- set /a a=%nian%-%a%*100
- set /a b=%nian%-%b%*400
- set /a c=%nian%-%c%*4
- set ed=28
- if %a% equ 0 (
- if %b% equ 0 set ed=29
- ) else (
- if %c% equ 0 set ed=29
- )
- if %ed% equ 29 echo.&&echo %nian%年是闰年&&echo.
- 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
对平年、闰年进行了判断。
- @echo off&setlocal enabledelayedexpansion
- echo 请输入起始日期 格式:2006-1-20
- set /p kai= &cls
- echo 请输入结束日期 格式:2008-3-12
- set /p wei= &cls
- call :lis %kai% xiao
- call :lis %wei% da
- for /l %%a in (%xiao% 1 %da%) do (
- set sy=%%a
- set /a leap="^!(sy %% 4) & ^!(^!(sy %% 100)) | ^!(sy %% 400)"
- set /a max=28+leap
- if "%%a"=="%wei:~0,4%" (set yuem=!dam!) else set yuem=12
- call :sss
- )
- echo.&echo 完成。。。
- echo.&pause&exit
- :sss
- for /l %%i in (!xiaom! 1 !yuem!) do (
- call :loop %%i
- for /l %%a in (!xiaod! 1 !ssd!) do (
- set nm=0%%i&set nd=0%%a
- >>字典.txt echo !sy:~-2!!nm:~-2!!nd:~-2!
- )
- set /a xiaod=1
- )
- set /a xiaom=1
- goto :eof
- :loop
- for /f "tokens=%1" %%i in ("31 !max! 31 30 31 30 31 31 30 31 30 31") do (
- set ssd=%%i
- )
- if "!sy!-%1"=="%wei:~0,4%-!dam!" (set ssd=!dad!)
- goto :eof
- :lis
- for /f "tokens=1-3 delims=-./ " %%a in ("%~1") do (
- set /a %~2=%%a,%2m=100%%b%%100,%2d=100%%c%%100
- )
- goto :eof
复制代码
[ 本帖最后由 随风 于 2008-4-19 07:04 编辑 ]
作者: pcl_test 时间: 2016-7-17 23:22
本帖最后由 pcl_test 于 2016-7-17 23:26 编辑
- //&cls&mshta "%~f0"|find /v ""&pause&exit
-
- <script language=vbscript>
- Set fso = CreateObject("Scripting.Filesystemobject")
- date1 = DateValue("2007-01-01")
- date2 = DateValue("2008-04-18")
- s = FormatDate(date1)
-
- Do Until date1 = date2
- date1 = DateAdd("d", 1 , date1)
- s = s & FormatDate(date1)
- Loop
-
- fso.CreateTextFile("字典.txt", 2).Write s
- fso.GetStandardStream(1).Write s
-
- Function FormatDate(d)
- FormatDate = right(year(d),2) & right("0" & month(d),2) & right("0" & day(d),2) &vbCrLf
- ENd Function
- Close()
- </script>
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |