摘自:http://diandian.iteye.com/blog/684630

@echo off
setlocal enabledelayedexpansion:::::::::::::::::::::::::::::::::::::::::::::::::::
:: DOS下用批处理计算N天前的日期或者N天前后的日期 ::
:: 2k、xp、2003、win7下测试通过                  ::
:: @author zhzhl0                                ::
:: mklv2005#163.com                              ::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
echo.
echo 计算 days 天前或 days 天后的日期;
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 正数:days 天前的日期;负数:days 天后的日期;
set /p days=请输入天数(days天前正数, days天后负数)
:: set days=17rem program 'begin' 开始
:begin
:: 判断操作系统
ver | find /i "5.0" > nul && goto 2k || goto xprem program 'xp';xp 系统
:xp
for /f "tokens=1-3 delims=-/. " %%i in ("%date%") do ( set /a yy=%%i, mm=%%j, dd=%%k
)
goto nornalrem program '2k';2k 系统
:2k
for /f "tokens=2-4 delims=-/. " %%i in ("%date%") do ( set /a yy=%%i, mm=%%j, dd=%%k
)
goto nornalrem program 'nornal';计算日期
:nornal
:: echo %yy%-%mm%-%dd%;算出%yy%是否是闰年
set /a leap="^!(%yy% %% 4) & ^!(^!(%yy% %% 100)) | ^!(%yy% %% 400)":: 计算日期相差的天数
set /a nd=!dd!-!days!:: echo [nd]=%nd%  计算当月的天数
set /a num=0, mday=0, max=28+leap
set str=31 %max% 31 30 31 30 31 31 30 31 30 31
for %%i in (%str%) do ( set /a num+=1 if !num! equ !mm! set /a mday=%%i
)::echo yy=%yy% mm=%mm% dd=%dd% nd=%nd% mday=%mday% leap=%leap%; 如果小于等于0则转到xiaoyu块处理
if !nd! leq 0 goto xiaoyu
:: 如果大于当月天数则转到dayu块处理
if !nd! gtr !mday! goto dayu set nm=%mm%
goto printlnrem program 'dayu' 处理日期相差天数大于当月天数的情况
:dayu
set /a nm=!mm!+1
set /a nd=!nd!-!mday!
if !nm! gtr 12 (set /a yy=!yy!+1set /a nm-=12
)
set /a leap="^!(%yy% %% 4) & ^!(^!(%yy% %% 100)) | ^!(%yy% %% 400)"
set /a num=0, mday=0, max=28+leap
set str=31 %max% 31 30 31 30 31 31 30 31 30 31
for %%i in (%str%) do ( set /a num+=1 if !num! equ !nm! set /a mday=%%i
)
set mm=%nm%::echo yy=%yy% mm=%mm% nd=%nd% mday=%mday% leap=%leap%if !nd! gtr !mday! goto dayu
goto printlnrem program 'xiaoyu' 处理日期相差天数小于等于0的情况
:xiaoyu
set /a nm=!mm!-1
if !nm! lss 1 (set /a yy=!yy!-1set /a nm+=12
)
set /a leap="^!(%yy% %% 4) & ^!(^!(%yy% %% 100)) | ^!(%yy% %% 400)"
set /a num=0, mday=0, max=28+leap
set str=31 %max% 31 30 31 30 31 31 30 31 30 31
for %%i in (%str%) do ( set /a num+=1 if !num! equ !nm! set /a mday=%%i
)
set /a nd=!mday!+!nd!
set mm=%nm%::echo yy=%yy% mm=%mm% nd=%nd% mday=%mday% leap=%leap%if !nd! leq 0 goto xiaoyu
goto printlnrem program 'println' 输出
:println
set mm=0%nm%
set dd=0%nd%
set mm=%mm:~-2%
set dd=%dd:~-2%
if !days! leq 0 echo 现在日期是:%date%,%days:~1%天后的日期是:%yy%-%mm%-%dd%
if !days! gtr 0 echo 现在日期是:%date%,%days%天前的日期是:%yy%-%mm%-%dd%::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
echo.
pause.

若有凝问或错误,请指出,我好及时改正,让我们一起进步!
email : vinson_bs@126.com
qq : 103 586 2795
敲门砖: 代码谱写人生

windows dos 下用批处理计算N天前的日期或者N天前后的日期相关推荐

  1. dos下 和 批处理中的 for 语句的基本用法

    原文地址:http://blog.csdn.net/wh_19910525/article/details/7912440 for 语句的基本用法 : 最复杂的for 语句,也有其基本形态,它的模样是 ...

  2. Windows DOS下查看硬盘分区

    运行cmd Diskpart //加载list Disk //列出硬盘list Volume //列出分区 Select Disk 0 //选择 编号0的硬盘list Partition //列出当前 ...

  3. linux下简单的批处理文件,LINUX下SHELL批处理(SSH批处理命令写法)

    Linux下的SSH类似于windows下的DOS,算是一种便捷版的远程桌面系统,可以让我们直接远程管理LINUX服务器,DOS下有批处理命令,LINUX的SHELL也有远程SSH批处理命令,SSH批 ...

  4. 浅谈Windows环境下DOS及MS-DOS以及常见一些命令的介绍

    作者:慕课网 链接:https://zhuanlan.zhihu.com/p/46329794 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 前记 自己是搞编程的, ...

  5. Windows下Bat批处理

    前段时间为了省去每次都需要用vs打开工程去编译每个工程的时间,写了批处理脚本,批量编译所有工程,以下附上工作过程中用到的比较有用的内容链接: 什么是批处理?(来自百度百科) 批处理(Batch),也称 ...

  6. linux 批处理 exe文件内容,Linux_DOS批处理文件,DOS下的可执行文件有三种,分 - phpStudy...

    DOS批处理文件 DOS下的可执行文件有三种,分别是EXE,COM和BAT.其中,EXE和COM文件都是二进制形式的,只有BAT文件是文本形式的,可以直接阅读.因 此,BAT文件和以上二进制可执行文件 ...

  7. 【WINDOWS / DOS 批处理】findstr、find命令对汉字的支持

    在WINDOWS / DOS 批处理编程中,使用findstr.find命令都可在文件中查找文本,但是它们对汉字的支持都存在如下"缺陷": 使用 findstr.find命令查找汉 ...

  8. 在 windows 环境下,编写一个批处理程序(算命大师.bat)

    在 windows 环境下,编写一个批处理程序(算命大师.bat) 标题 在 windows 环境下,编写一个批处理程序(算命大师.bat) **题目:**在 windows 环境下,编写一个批处理程 ...

  9. 操原上机(一)在 Windows 环境下,编写一个批处理程序(算命大师.bat)

    要求 在 Windows 环境下,编写一个批处理程序(算命大师.bat),程序运行后,输入:出生年月日(例如 2000-07-31).系统输出相应的属相和星座,例如:你属兔, 狮子座.要求:输入进行合 ...

最新文章

  1. Linux运维人员必会开源运维工具体系
  2. list-style-type:decimal在IE中显示全是1的解析
  3. 量化评估推荐系统效果
  4. Maven私服(二) - Nexus的安装
  5. 虚拟化技术天书:九宫格图解虚拟化——此文多风险,阅读需谨慎
  6. Java多线程系列 JUC线程池01 线程池框架
  7. [Linux]关于Transmission下载服务器的搭建与配置
  8. 自学单片机能找到工作吗?能有出路吗?
  9. 饿了么小程序容器首屏秒开优化实践
  10. B站视频解析去水印工具入口
  11. 计算机功能键盘使用方法,键盘的使用方法介绍 键盘上都有哪些功能按键
  12. HDUOJ---携程员工运动会场地问题
  13. 【学术相关】人工智能300年!LSTM之父万字长文:详解现代AI和深度学习发展史...
  14. 《共享经济:市场设计及其应用》——…
  15. python模糊查询mongodb_Python札记 -- MongoDB模糊查询
  16. 元宇宙NFT溯源交易数字藏品3D合成盲盒商城抽集卡APP系统源码去中心化艺术品源码下载
  17. python提供了几个基本的数值运算操作符_慢步学习,二级python,数字类型及其运算...
  18. 关于宗海图WGS84转CGCS2000的问题
  19. 大数据的产生和作用(详细分析)
  20. 又一波网红餐饮店惨死,餐饮+新零售或将产生新格局

热门文章

  1. 混合整数线性规划,图的最大流,图的匹配,求解
  2. 激光slam课程学习笔记--第2课:2D激光slam
  3. 机器人操控电脑,华为天才少年稚晖君再出手,直呼:项目不太难
  4. Adaboost基本二分类算法
  5. 12029 citrix onl…
  6. tls 1.2加密_椭圆曲线加密在TLS 1.3中的工作方式
  7. Java中List 删除元素方法參考
  8. 在画图软件中,可以画出不同大小或颜色的圆形、矩形等几何图形。几何图形之间有许多共同的特征,如它们可以是用某种颜色画出来的,可以是填充的或者不填充的
  9. 【电影】经典狙击手电影
  10. windows下nginx配置php环境