`
icarusli
  • 浏览: 531090 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

批处理获得任意天前的日期

 
阅读更多
@echo off
:: 作者: namejm  出自:cn-dos
:: 求N天前的日期
:: 日期可以带星期,但是,必须以年月日的顺序排列
:: 年份必须是四位,否则会出错
@echo off
:Main
cls
set day=%date%
set days=0
echo.&echo.
echo       当前日期是:%day%
echo.&set /p input=      请指定要追溯的天数:
setlocal enabledelayedexpansion
:: 提取日期
for /f "tokens=1-3 delims=-/. " %%i in ("%day%") do (
    set /a sy=%%i, sm=100%%j %% 100, sd=100%%k %% 100
)
set /a sd-=input
if %sd% leq 0 call :count
cls&echo.&echo.
echo       当前日期是:%day%
echo.
set sm=0%sm%
set sd=0%sd%
echo       %input% 天前的日期是:%sy%-%sm:~-2%-%sd:~-2%
pause>nul
goto Main

:count
set /a sm-=1
if !sm! equ 0 set /a sm=12, sy-=1
call :days
set /a sd+=days
if %sd% leq 0 goto count
goto :eof

:days
:: 获取指定月份的总天数
set /a leap="^!(sy %% 4) & ^!(^!(sy %% 100)) | ^!(sy %% 400)"
set /a max=28+leap
for /f "tokens=%sm%" %%i in ("31 %max% 31 30 31 30 31 31 30 31 30 31") do set days=%%i
goto :eof


该批处理可以考虑到例如4月1日前一天是3月31日,而不是4月0日的问题,值得参考。
分享到:
评论

相关推荐

    日历、日期算法CMD批处理

    3. **获得任意日期天数.cmd**:这个脚本可能用于获取从某个特定日期(如用户输入的日期)到当前日期的天数。它可能需要用到日期的比较和计算,这可能涉及到`set /a`命令进行算术运算,以及解析和设置日期的命令。 4...

    如何编写批处理文件批处理文件批处理文件

    简明批处理教程22009年10月20日 星期二 下午 05:35 最近对于批处理技术的探讨比较热,也有不少好的批处理程序发布,但是如果没有一定的相关知识恐怕不容易看懂和理解这些批处理文件,也就更谈不上自己动手编写了,古...

    凌霄图像批处理专家4.2.1.288破解版

    可以修改文件的属性及日期,还提供了灵活的大小写转换机制。 2、添加水印: 提供图片、文本、水印库三大水印类别。每一类别都有丰富的选项供您调配水印效果,其中包括但不限于透明度、透明颜色、阴影、排列方式、...

    DOS批处理常用命令及用法大全

    ### DOS批处理常用命令及用法详解 #### 1. Echo 和 @ 回显控制命令 **命令介绍:** - `echo [文本]`:显示指定的文本字符串。 - `echo off`:关闭命令提示符窗口中的命令回显。 - `echo on`:开启命令提示符窗口中...

    DOS命令创建以当前日期为文件名的TXT文件

    DOS命令创建以当前日期为文件名的TXT文件, test.bat文件是点击直接创建以当前日期...test1.vbs放在任意地方,使用时双击即可 三个文件都可以用txt打开和编辑,默认展示的内容可以根据自己需求更改,照着格式写就可以了

    2023-MySQL面试必备25题及答案

    使用`SELECT COUNT(column_name)`可以得到指定列的行数。例如,`SELECT COUNT(user_id) FROM users;`会返回users表中user_id列的不重复行数。 2. **MySQL查询的大小写敏感性**: MySQL默认在查询中不区分大小写,...

    机器容量无限的同型机分批排序问题 (2013年)

    这意味着机器的处理能力是“无界”的,只要不超过机器的最大容量,可以处理任意数量的工件。同型机在处理过程中的批处理时间是由批内最长的单个工件处理时间决定的,批内的所有工件在相同的时刻开始和结束处理。处理...

    grep.exe for windows

    例如,`.`代表任意单字符,`*`表示前面的字符可以重复任意次,`^`表示行首,`$`表示行尾。 4. **示例**: - 查找文件`example.txt`中包含"hello"的行:`grep "hello" example.txt` - 不区分大小写查找:`grep -i ...

    sas9.1.3:Language Reference Concepts.pdf

    - 使用SAS批处理模式:适用于自动化任务和脚本。 - 通过SAS/CONNECT:允许远程访问SAS服务器。 - **自定义SAS会话**: - 用户可以通过设置选项来调整SAS的行为。 - 可以定义宏变量、格式、目录等。 **章节2:...

    windows mysql 自动备份的几种方法汇总

    通过编写批处理脚本(例如backup_db.bat),可以将mysqldump命令和日期变量结合起来,定时备份数据库到指定位置。例如,每天凌晨5点执行备份脚本,生成以年月日命名的.sql文件。使用Windows计划任务功能来设置定时...

    2021-2022计算机二级等级考试试题及答案No.14556.docx

    这里`DATE()`返回当前日期,而`+120`表示将当前日期加上120天,得到一个新的日期。 ### 20. 字符串函数Mid() 第二十题涉及字符串函数`Mid()`的使用: - `Mid("SHANGHAI",6,3)`表示从字符串`"SHANGHAI"`的第6个字符...

    Dos命令大全

    标签的名字可以随便起,但是最好是有意义的字母啦,字母前加个:用来表示这个字母是标签,goto命令就是根据这个:来寻找下一步跳到到那里。最好有一些说明这样你别人看起来才会理解你的意图啊。 4.Rem 命令 注释...

    delphi 开发经验技巧宝典源码

    0193 获得指定月的最后一天 127 0194 在指定的日期上加上3月 127 0195 实现倒计时功能 128 0196 判断指定年份是否为闰年 129 0197 调用系统设置日期对话框 129 0198 将秒数转化成hh:mm:ss格式 129 0199...

    delphi 开发经验技巧宝典源码06

    0193 获得指定月的最后一天 127 0194 在指定的日期上加上3月 127 0195 实现倒计时功能 128 0196 判断指定年份是否为闰年 129 0197 调用系统设置日期对话框 129 0198 将秒数转化成hh:mm:ss格式 129 0199...

    powerbuilder

    功能直接向打印机发送任意字符串,通常用于发送打印机的控制代码。 语法PrintSend ( printjobnumber, string {, zerochar } ) 参数printjobnumber:用PrintOpen()函数打开的打印作业号string:string类型,指定发送...

    JAVA API 1.6 _ZH_CN

    9. **Swing增强**:Java Swing组件库在1.6版本中得到改进,包括更好的外观和行为、新的组件(如JTable的改进、JTabbedPane的改进),以及更丰富的事件处理机制。 10. **JDBC增强**:Java 1.6的JDBC API提供了更多...

    CMD命令行命令大全

    - 在批处理文件中暂停执行,直到用户按下任意键: ```cmd PAUSE ``` #### 35. POPD **命令功能:** - `POPD`命令用于恢复通过`PUSHD`命令保存的当前目录的前一个值。 **使用示例:** - 恢复到上次保存的当前...

    cmd操作命令和linux命令大全收集

    date /t 、 time /t 使用此参数即“DATE/T”、“TIME/T”将只显示当前日期和时间,而不必输入新日期和时间 set 指定环境变量名称=要指派给变量的字符 设置环境变量 set 显示当前所有的环境变量...

    C#开发经验技巧宝典

    0866 控制批处理内语句的执行 513 0867 执行查询但是显示列信息 514 0868 获取连接或试图连接的次数 514 0869 获取当前数据库的语言名 514 19.5 时间与谓词 514 0870 时间函数的使用 514 0871 设置...

Global site tag (gtag.js) - Google Analytics