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

[日期时间] 批处理怎样输出两个指定日期之间的所有日期?

本帖最后由 DAIC 于 2011-6-11 22:13 编辑

开始日期:1810-01-01
结束日期:2010-01-01
希望得到的结果(总共73050行):
1810-01-01
1810-01-02
1810-01-03
...
2010-01-01

15楼的结果:
c:\Test>timeit test.bat
Elapsed Time:     0:00:34.590
Process Time:     0:00:23.212

28楼的结果:
c:\Test>timeit test.bat
Elapsed Time:     0:00:19.345
Process Time:     0:00:11.778

4# mxxcgzxxx


这个代码运行了六七分钟,才刚刚跑到1926年,怎样才能提高速度呢?

TOP

8# namejm


http://bbs.bathome.net/viewthrea ... muid=38107#pid49141
这个代码看不懂,能否教一下怎么设置开始日期和结束日期?

TOP

9# zm900612


有问题:
19000228
19000230
19000301

TOP

19# broly


初学乍练,不是很懂,帮忙写个代码吧。

TOP

15楼的结果:73050行,还没有看到错误的日期。
c:\Test>timeit test.bat
Elapsed Time:     0:00:34.590
Process Time:     0:00:23.212
  1. @echo off&setlocal enabledelayedexpansion
  2. set start=1810-01-01
  3. set end=2010-01-01
  4. set /a sy=%start:~,4%,sm=1%start:~5,2%%%100,sd=1%start:~8,2%%%100,ey=%end:~,4%,em=1%end:~5,2%%%100,ed=1%end:~8,2%%%100,a=31
  5. for %%a in (1 3 5 7 8 10 12 4 6 9 11) do (
  6.   if %%a equ 4 set /a a-=1
  7.   set /a _%%a=a
  8. )
  9. (for /l %%a in (%sy%,1,%ey%) do (
  10.   set /a "_2=^!(%%a%%4)&^!(^!(%%a%%100))|^!(%%a%%400)+28"
  11.   set /a a=1,b=12
  12.   if "%%a" equ "%sy%" set /a a=sm
  13.   if "%%a" equ "%ey%" set /a b=em
  14.   for /l %%b in (!a!,1,!b!) do (
  15.     set /a c=1,d=_%%b
  16.     if "%%a%%b" equ "%sy%%sm%" set /a c=sd
  17.     if "%%a%%b" equ "%ey%%em%" set /a d=ed
  18.     for /l %%c in (!c!,1,!d!) do (
  19.       for %%d in (%%b %%c) do set ".%%d=0%%d"&set ".%%d=!.%%d:~-2!"
  20.       echo %%a-!.%%b!-!.%%c!
  21.     )
  22.   )
  23. ))>15.txt
复制代码

TOP

26# zm900612


我希望把年月日用减号分开,应该修改哪些地方?

TOP

28楼的结果:
Elapsed Time:     0:00:19.345
Process Time:     0:00:11.778
  1. @echo off&setlocal enabledelayedexpansion
  2. set min=18100101
  3. set max=20100101
  4. for /l %%a in (31 -1 1) do (
  5.         set tmp=0%%a
  6.         set md=!md! !tmp:~-2!
  7. )
  8. set /a y1=%min:~0,-4%,y2=%max:~0,-4%,m1=1%min:~-4,2%-100,m2=1%max:~-4,2%-100,d1=1%min:~-2%-100,d2=1%max:~-2%-100,s1=~-m1*31+d1-1,s2=(13-m2)*31-d2
  9. (for /l %%a in (%y2% -1 %y1%) do (
  10.         set /a "1/(%%a%%3200)"||set pr=!pr! %%a0229
  11.         for %%b in (%md:*13 =%) do (
  12.                 for %%c in (%md%) do (
  13.                         echo %%a-%%b-%%c
  14.                 )
  15.         )
  16. ))>tmp 2>nul
  17. if %s2% gtr 0 set skip1="skip=%s2%"
  18. (for /f %skip1% %%a in (tmp) do echo %%a)>tmp2
  19. sort tmp2 >tmp
  20. if %s1% gtr 0 set skip2="skip=%s1%"
  21. (for /f %skip2% %%a in (tmp) do echo %%a)>tmp2
  22. findstr /e "[^2]-.. 12-.. 02-[0-1]. 02-2[0-8] [02468][048]-02-29 [13579][26]-02-29" tmp2|findstr /ve "0[2469]-31 02-30 11-31 [02468][048]00-02-29 [13579][26]00-02-29 %pr%">28.txt
复制代码

TOP

再次求助:http://bbs.bathome.net/viewthrea ... muid=38107#pid49141
这个代码看不懂,能否教一下怎么设置开始日期和结束日期?

TOP

返回列表