windows dos 下用批处理计算N天前的日期或者N天前后的日期
摘自: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天前后的日期相关推荐
- dos下 和 批处理中的 for 语句的基本用法
原文地址:http://blog.csdn.net/wh_19910525/article/details/7912440 for 语句的基本用法 : 最复杂的for 语句,也有其基本形态,它的模样是 ...
- Windows DOS下查看硬盘分区
运行cmd Diskpart //加载list Disk //列出硬盘list Volume //列出分区 Select Disk 0 //选择 编号0的硬盘list Partition //列出当前 ...
- linux下简单的批处理文件,LINUX下SHELL批处理(SSH批处理命令写法)
Linux下的SSH类似于windows下的DOS,算是一种便捷版的远程桌面系统,可以让我们直接远程管理LINUX服务器,DOS下有批处理命令,LINUX的SHELL也有远程SSH批处理命令,SSH批 ...
- 浅谈Windows环境下DOS及MS-DOS以及常见一些命令的介绍
作者:慕课网 链接:https://zhuanlan.zhihu.com/p/46329794 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 前记 自己是搞编程的, ...
- Windows下Bat批处理
前段时间为了省去每次都需要用vs打开工程去编译每个工程的时间,写了批处理脚本,批量编译所有工程,以下附上工作过程中用到的比较有用的内容链接: 什么是批处理?(来自百度百科) 批处理(Batch),也称 ...
- linux 批处理 exe文件内容,Linux_DOS批处理文件,DOS下的可执行文件有三种,分 - phpStudy...
DOS批处理文件 DOS下的可执行文件有三种,分别是EXE,COM和BAT.其中,EXE和COM文件都是二进制形式的,只有BAT文件是文本形式的,可以直接阅读.因 此,BAT文件和以上二进制可执行文件 ...
- 【WINDOWS / DOS 批处理】findstr、find命令对汉字的支持
在WINDOWS / DOS 批处理编程中,使用findstr.find命令都可在文件中查找文本,但是它们对汉字的支持都存在如下"缺陷": 使用 findstr.find命令查找汉 ...
- 在 windows 环境下,编写一个批处理程序(算命大师.bat)
在 windows 环境下,编写一个批处理程序(算命大师.bat) 标题 在 windows 环境下,编写一个批处理程序(算命大师.bat) **题目:**在 windows 环境下,编写一个批处理程 ...
- 操原上机(一)在 Windows 环境下,编写一个批处理程序(算命大师.bat)
要求 在 Windows 环境下,编写一个批处理程序(算命大师.bat),程序运行后,输入:出生年月日(例如 2000-07-31).系统输出相应的属相和星座,例如:你属兔, 狮子座.要求:输入进行合 ...
最新文章
- Linux运维人员必会开源运维工具体系
- list-style-type:decimal在IE中显示全是1的解析
- 量化评估推荐系统效果
- Maven私服(二) - Nexus的安装
- 虚拟化技术天书:九宫格图解虚拟化——此文多风险,阅读需谨慎
- Java多线程系列 JUC线程池01 线程池框架
- [Linux]关于Transmission下载服务器的搭建与配置
- 自学单片机能找到工作吗?能有出路吗?
- 饿了么小程序容器首屏秒开优化实践
- B站视频解析去水印工具入口
- 计算机功能键盘使用方法,键盘的使用方法介绍 键盘上都有哪些功能按键
- HDUOJ---携程员工运动会场地问题
- 【学术相关】人工智能300年!LSTM之父万字长文:详解现代AI和深度学习发展史...
- 《共享经济:市场设计及其应用》——…
- python模糊查询mongodb_Python札记 -- MongoDB模糊查询
- 元宇宙NFT溯源交易数字藏品3D合成盲盒商城抽集卡APP系统源码去中心化艺术品源码下载
- python提供了几个基本的数值运算操作符_慢步学习,二级python,数字类型及其运算...
- 关于宗海图WGS84转CGCS2000的问题
- 大数据的产生和作用(详细分析)
- 又一波网红餐饮店惨死,餐饮+新零售或将产生新格局