`
征客丶
  • 浏览: 135093 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

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=17

rem program 'begin' 开始
:begin
:: 判断操作系统
ver | find /i "5.0" > nul && goto 2k || goto xp

rem program 'xp';xp 系统
:xp
for /f "tokens=1-3 delims=-/. " %%i in ("%date%") do ( 
  set /a yy=%%i, mm=%%j, dd=%%k 
) 
goto nornal

rem program '2k';2k 系统
:2k
for /f "tokens=2-4 delims=-/. " %%i in ("%date%") do ( 
  set /a yy=%%i, mm=%%j, dd=%%k 
)
goto nornal

rem 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 println

rem program 'dayu' 处理日期相差天数大于当月天数的情况
:dayu
set /a nm=!mm!+1
set /a nd=!nd!-!mday!
if !nm! gtr 12 (
  set /a yy=!yy!+1
  set /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 println

rem program 'xiaoyu' 处理日期相差天数小于等于0的情况
:xiaoyu
set /a nm=!mm!-1
if !nm! lss 1 (
  set /a yy=!yy!-1
  set /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 println

rem 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 : binary_space@126.com
qq     : 1035862795
敲门砖: 代码谱写人生


分享到:
评论

相关推荐

    用DOS命令写批处理文件

    默认情况下,如果在批处理文件中使用 `ECHO` 命令,它会显示该命令本身。为了防止这种情况,可以在批处理文件的开头使用 `@ECHO OFF` 来禁用命令回显。例如: ```batch @ECHO OFF ECHO Hello, World! ``` 这将只显示...

    dos批处理命令大全

    "dos批处理命令大全" dos批处理命令是dos操作系统中的一种批处理语言,用于自动执行一系列命令。以下是dos批处理命令的详细解释和示例: 1. Echo 命令 Echo 命令用于打开回显或关闭请求回显功能,或显示消息。...

    dos实例和批处理手册

    批处理则是在DOS环境下进行批量自动化任务处理的一种方式,通过编写简单的文本文件(扩展名为.BAT或.CMD),将一系列命令组合在一起,一次执行,极大地提高了工作效率。 【描述】"dos批处理的实例,多研究研究帮你...

    DOS批处理批处理批处理批处理批处理

    DOS批处理是一种在DOS操作系统环境下执行一系列命令的脚本技术,它允许用户通过编写简单的文本文件(批处理文件)来自动化重复性的系统任务,从而提高工作效率。DOS批处理的基本原理是利用命令行界面(CLI)的命令,...

    DOS批处理教程 批处理

    - **定义**:DOS批处理是指在MS-DOS环境下通过编写一系列命令并保存为扩展名为`.bat`或`.cmd`的文件来自动执行特定任务的过程。这些命令可以是内部命令(如`dir`、`cd`)或外部命令(如`format`、`copy`)。 - **作用**...

    DOS批处理自动删除7天前的文件及使用说明

    DOS批处理是一种在DOS或Windows操作系统环境下执行一系列命令的文本文件,通常...通过了解这些知识点,你可以更安全、高效地使用DOS批处理自动删除7天前的文件。但请务必谨慎操作,遵循最佳实践,以保护数据的安全。

    DOS批处理 DOS批处理

    批处理是一种在DOS操作系统环境下实现自动化执行一系列命令的技术。批处理文件通常具有".bat"的扩展名,它们由一系列DOS命令组成,按照特定的顺序执行,简化了手动操作的繁琐过程。批处理文件的核心在于它允许用户一...

    DOS批处理DOS批处理DOS批处理

    DOS批处理DOS批处理DOS批处理DOS批处理DOS批处理DOS批处理DOS批处理

    DOS批处理高级教程精选DOS命令使用方法DOS命令详解共

    本资源“DOS批处理高级教程精选DOS命令使用方法DOS命令详解共66页.pdf.zip”显然是一个关于DOS批处理的详细教程,包含66页的内容,旨在深入讲解DOS命令的使用方法和批处理技术。 DOS,全称Disk Operating System,...

    DOS批处理高级教程

    DOS批处理高级教程 DOS批处理高级教程:第一章 批处理基础 DOS批处理高级教程:第二章 DOS循环for命令详解 DOS批处理高级教程:第三章 FOR命令中的变量 DOS批处理高级教程:第四章 批处理中的变量 DOS批处理高级教程...

    中国DOS联盟2007批处理精华合集

    中国DOS联盟2007批处理精华合集,这些知识将会让你的技术得到迅速的提升!

    DOS批处理实例教程+常用批处理下载

    DOS批处理实例教程+常用批处理下载DOS批处理实例教程+常用批处理下载DOS批处理实例教程+常用批处理下载DOS批处理实例教程+常用批处理下载DOS批处理实例教程+常用批处理下载DOS批处理实例教程+常用批处理下载DOS...

    一款dos状态下的万能批处理工具

    描述中提到“本软件来自互联网,是一款在DOS状态下能够使用的完全的万能批处理工具”,这暗示了这款工具不仅可以在DOS环境下运行,还具备广泛的功能。所谓的“万能”通常意味着它支持多种操作,如文件管理、系统维护...

    DOS批处理源代码

    DOS批处理源代码是计算机领域中一种古老但依然实用的技术,主要用于自动化执行一系列命令,尤其是在Windows系统的早期版本中广泛使用。在这个压缩包中,包含了大量DOS批处理的源代码,这些代码覆盖了各种功能设计,...

    DOS批处理学习,DOS批处理学习

    DOS批处理是一种在DOS操作系统环境下执行一系列命令的脚本技术,它是早期计算机用户进行自动化任务处理的重要手段。在Windows系统中,虽然图形界面已占据主导地位,但DOS批处理仍然有其独特的应用价值,特别是在系统...

    DOS批处理实例教程

    批处理,也称为批处理脚本,英文译为BATCH,批处理文件后缀BAT就取的前三个字母。它的构成没有固定格式,只要遵守以下这条就ok了:每一行可视为一个命令,每个命令里可以含多条子命令,从第一行开始执行,直到最后一...

    dos批处理命令解析

    dos批处理命令解析dos批处理命令解析dos批处理命令解析dos批处理命令解析

    DOS批处理学习资料

    DOS批处理是一种在DOS操作系统环境下执行一系列命令的方法,它通过创建扩展名为BAT的文本文件来实现自动化操作。批处理文件通常包含了一系列的DOS命令,这些命令按照特定的顺序执行,极大地提高了工作效率。以下是...

    DOS批处理编译器 DOS软件

    DOS批处理编译器是用于创建和管理DOS环境下批处理程序的工具,它使得在DOS系统中编写和执行批处理脚本变得更加高效和便捷。DOS批处理是MS-DOS操作系统中的一个功能,允许用户通过编写一系列命令来自动化日常任务,如...

Global site tag (gtag.js) - Google Analytics