手机
当前位置:查字典教程网 >脚本专栏 >DOS/BAT >5个计算天数的批处理代码第1/3页
5个计算天数的批处理代码第1/3页
摘要:于是把我的收集整理后发出来给大家共享一下。说明:收集整理:随风@bbs.bathome.cn2008-04-15第一个代码作者:WillSo...

于是把我的收集整理后发出来给大家共享一下。

说明:

收集整理:随风@bbs.bathome.cn2008-04-15

第一个代码作者:WillSort出自:cn-dos

第二、三、四、个代码作者:namejm出自:cn-dos

第五个为bat结合vbs代码,作者及出处都不详。

其中第一及第五个代码,输入负数为:追溯指定日期以后的天数。

第二、三、四个代码,未作测试,但输入正整数是可以的。也就是追溯指定日期以前的天数。

代码一、

作者:WillSort

复制代码 代码如下:

::DateDel2.bat-删除指定路径下指定日数以前修改的文件

::作者:WillSort-2005-9-2-CMD@WinXP出自:cn-dos

::注意事项:变量tian为指定日数,昨天为1,前天为2,依次类推

::核心算法:RitchieLawrence,updated2002-08-13.Version1.1

::

@echooff&setlocalENABLEEXTENSIONS

call:Date2Day%date:~0,10%sdays

rem下行的%tian%代表天数.

set/ptian=请指定要追溯的天数:

set/asdays-=tian

call:Day2Date%sdays%difdate

echo.&echo.

echo指定的日期是:%date:~0,10%

echo.

echo%tian%天前的日期是:%difdate%

echo.&pause

exit

:Date2Day

setlocalENABLEEXTENSIONS

for/f"tokens=1-3delims=/-,"%%ain('echo/%1')do(

setyy=%%a&setmm=%%b&setdd=%%c

)

set/add=100%dd%%%100,mm=100%mm%%%100

set/az=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2

set/aj=j/5+dd+y*365+y/4-y/100+y/400-2472633

endlocal&set%2=%j%&goto:EOF

:Day2Date

setlocalENABLEEXTENSIONS

set/ai=%1,a=i+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a

set/ad=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5

set/add=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10

(if%mm%LSS10setmm=0%mm%)&(if%dd%LSS10setdd=0%dd%)

endlocal&set%2=%yy%-%mm%-%dd%&goto:EOF

代码二、

以下三个代码作者全是namejm

复制代码 代码如下:

::作者:namejm荣誉版主出自:cn-dos

@echooff

::求N天前的日期

::思路:

::模拟手工运算,用日期数减去天数,差值为负时向高位借1。

::特点:

::代码简洁,容易理解,速度快慢取决于指定的天数大小

::日期可以带星期,但是,必须以年月日的顺序排列

::年份必须是四位,否则会出错

@echooff

:Main

cls

setday=%date%

setdays=0

echo.&echo.

echo指定的日期是:%day%

echo.

set/pinput=请指定要追溯的天数:

setlocalenabledelayedexpansion

::提取日期

for/f"tokens=1-3delims=-/."%%iin("%day%")do(

set/asy=%%i,sm=100%%j%%100,sd=100%%k%%100

)

set/asd-=input

if%sd%leq0call:count

cls

echo.&echo.

echo指定的日期是:%day%

echo.

setsm=0%sm%

setsd=0%sd%

echo%input%天前的日期是:%sy%-%sm:~-2%-%sd:~-2%

pause>nul

gotoMain

:count

set/asm-=1

if!sm!equ0set/asm=12,sy-=1

call:days

set/asd+=days

if%sd%leq0gotocount

goto:eof

:days

::获取指定月份的总天数

set/aleap="^!(sy%%4)&^!(^!(sy%%100))|^!(sy%%400)"

set/amax=28+leap

setnum=0

setstr=31%max%31303130313130313031

for%%iin(%str%)do(

set/anum+=1

if%sm%equ!num!setdays=%%i&goto:eof

)

goto:eof

当前1/3页123下一页阅读全文

【5个计算天数的批处理代码第1/3页】相关文章:

开机更新桌面主题的批处理代码

可以实现反复重启的批处理

WINDOWS 2003服务优化批处理第1/2页

中文显示ping结果的批处理bat文件

不错的dos批处理命令详解第1/2页

批处理的api WMIC学习体会有感第1/2页

实现百度关键字搜索的批处理

DOS 下的批处理文件

学习使用批处理文件的意义第1/2页

一个小助手批处理实例代码

精品推荐
分类导航