设为首页收藏本站
网站公告 | 这是第一条公告
     

 找回密码
 立即注册
缓存时间04 现在时间04 缓存数据 十七岁吻的人额头没有粉底

十七岁吻的人额头没有粉底 -- 十七岁

查看: 1668|回复: 3

bat脚本得到前一天的日期的代码

[复制链接]

  离线 

TA的专栏

  • 打卡等级:偶尔看看
  • 打卡总天数:14
  • 打卡月天数:0
  • 打卡总奖励:197
  • 最近打卡:2023-08-27 07:17:53
等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
27
主题
19
精华
0
金钱
277
积分
56
注册时间
2023-8-12
最后登录
2025-4-23

发表于 2024-5-18 19:06:06 来自手机 | 显示全部楼层 |阅读模式
最近需要获取当前日期的前一天,今天日期为2024-5-17 12:54:24
但部分代码只是不是所有机器通用。有些机器的%date%的格式本身就是2024-5-17,有的机器是2024/5/17 所以建议先稍微改一下bat中的delims=-,这个-就是分隔符,大家可以根据自己的需求修改即可。此代码在2019 data center中测试通过。
实现代码一
  1. ::判断当前日期的前一天
  2. ::首先直接把天数减1天
  3. ::如果出来的是0天就把月减1天,天数是当月的最后一天。
  4. ::如果出来的是0月就把年减1年,月数是当年的最后一月。
  5. @echo off
  6. set yyyy=%date:~2,2%
  7. set mm=%date:~5,2%
  8. set dd=%date:~8,2%
  9. set /a od=%dd%-1
  10. if %od%==0 call :dd0
  11. if %mm%==0 call :mm0
  12. set yestaday=%yyyy%%mm%%od%
  13. echo %yestaday%
  14. pause
  15. :dd0
  16. set /a mm=%mm%-1
  17. for %%a in (1 3 5 7 8 10 12)do set %%add=31
  18. set /a pddd=%yyyy%*10/4
  19. set pd2d=%pddd:~-1,1%
  20. set 2dd=28
  21. if %pd2d%==0 set 2dd=29
  22. for %%b in (4 6 9 11)do set %%bdd=30
  23. set od=%%mm%dd%
  24. goto :eof
  25. :mm0
  26. set /a yyyy=%yyyy%-1
  27. set mm=12 && set od=31
  28. goto :eof
复制代码
效果图
1.png

实现代码二

计算N天前的日期的bat脚本
  1. @echo off
  2. rem 计算指定天数之前的日期
  3. set DaysAgo=1
  4. rem 假设系统日期的格式为yyyy-mm-dd
  5. call :DateToDays %date:~0,4% %date:~5,2% %date:~8,2% PassDays
  6. set /a PassDays-=%DaysAgo%
  7. call :DaysToDate %PassDays% DstYear DstMonth DstDay
  8. set DstDate=%DstYear%-%DstMonth%-%DstDay%
  9. echo %DaysAgo%天的日期是%DstDate%
  10. pause
  11. goto :eof

  12. :DateToDays %yy% %mm% %dd% days
  13. setlocal ENABLEEXTENSIONS
  14. set yy=%1&set mm=%2&set dd=%3
  15. if 1%yy% LSS 200 if 1%yy% LSS 170 (set yy=20%yy%) else (set yy=19%yy%)
  16. set /a dd=100%dd%%%100,mm=100%mm%%%100
  17. set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
  18. set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
  19. endlocal&set %4=%j%&goto :EOF

  20. :DaysToDate %days% yy mm dd
  21. setlocal ENABLEEXTENSIONS
  22. set /a a=%1+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
  23. set /a d=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5
  24. set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
  25. (if %mm% LSS 10 set mm=0%mm%)&(if %dd% LSS 10 set dd=0%dd%)
  26. endlocal&set %2=%yy%&set %3=%mm%&set %4=%dd%&goto :EOF
复制代码
效果图
2.png

实现代码三
  1. @echo off
  2. echo wscript.echo dateadd("d",-1,now())>x.vbs
  3. for /f %%i in ('cscript /nologo x.vbs') do set d=%%i
  4. del x.vbs
  5. echo %d%
  6. pause
复制代码
代码输出格式化需要自己额外加。不如上面两个可以自定义格式
例如:240517 或者 20240517
实现代码四

小编用了一点时间修复原来代码的分割符号//或者,或者-的问题
  1. echo off
  2. echo wscript.echo dateadd("d",-1,now())>vbs.vbs
  3. for /f %%a in ('cscript /nologo vbs.vbs') do del vbs.vbs&&set yyyymmdd=%%a
  4. for /f "tokens=1,2,3* delims=-" %%i in ('echo %yyyymmdd%') do set yyyy=%%i&set mm=%%j&set dd=%%k
  5. if %mm% LSS 9 set mm=0%mm%
  6. if %dd% LSS 9 set dd=0%dd%
  7. set yesterday=%yyyy%-%mm%-%dd%
  8. echo 昨天是:%yesterday%
  9. echo 请按任意键退出
  10. pause>nul
复制代码
这段代码比较好看,也比较精简,大家使用过程中有什么问题可以交流。
实现代码五
  1. @echo off
  2. set "today=%date%"
  3. set "year=%today:~0,4%"
  4. set "month=%today:~5,2%"
  5. set "day=%today:~8,2%"
  6. set /A "day=day-1"
  7. if %day%==0 (
  8.     set /A "month=month-1"
  9.     if %month%==0 (
  10.         set /A "year=year-1"
  11.         set "month=12"
  12.     )
  13.     if %month%==1 set "month=01"
  14.     if %month%==2 set "month=02"
  15.     if %month%==3 set "month=03"
  16.     if %month%==4 set "month=04"
  17.     if %month%==5 set "month=05"
  18.     if %month%==6 set "month=06"
  19.     if %month%==7 set "month=07"
  20.     if %month%==8 set "month=08"
  21.     if %month%==9 set "month=09"
  22.     set /A "last_day=30+(month+month/8)%%2"
  23.     set "day=%last_day%"
  24. )
  25. if %day%==1 set "day=01"
  26. if %day%==2 set "day=02"
  27. if %day%==3 set "day=03"
  28. if %day%==4 set "day=04"
  29. if %day%==5 set "day=05"
  30. if %day%==6 set "day=06"
  31. if %day%==7 set "day=07"
  32. if %day%==8 set "day=08"
  33. if %day%==9 set "day=09"
  34. echo %year%-%month%-%day%
  35. pause
复制代码
实现代码六
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "timestamp=%date%"
  4. set "year=%timestamp:~0,4%"
  5. set "month=%timestamp:~5,2%"
  6. set "day=%timestamp:~8,2%"
  7. set /A "day=day-1"
  8. if %day%==0 (
  9.     set /A "month=month-1"
  10.     if !month!==00 (
  11.         set /A "year=year-1"
  12.         set "month=12"
  13.     )
  14.     for %%m in (01 02 03 04 05 06 07 08 09 10 11 12) do (
  15.         if !month!==%%m (
  16.             if "!month!" lss 10 (
  17.                 set "month=0!month!"
  18.             )
  19.         )
  20.     )
  21.     set /A "last_day=30+(month+month/8)%%2"
  22.     set "day=!last_day!"
  23. )
  24. for %%d in (01 02 03 04 05 06 07 08 09) do (
  25.     if !day!==%%d (
  26.         set "day=0!day!"
  27.     )
  28. )
  29. echo %year%-%month%-%day%
  30. pause
复制代码
到此这篇关于bat脚本得到前一天的日期的代码的文章就介绍到这了,更多相关bat前一天日期内容请搜索晓枫资讯以前的文章或继续浏览下面的相关文章希望大家以后多多支持晓枫资讯!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
晓枫资讯-科技资讯社区-免责声明
免责声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。
      1、注册用户在本社区发表、转载的任何作品仅代表其个人观点,不代表本社区认同其观点。
      2、管理员及版主有权在不事先通知或不经作者准许的情况下删除其在本社区所发表的文章。
      3、本社区的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,举报反馈:点击这里给我发消息进行删除处理。
      4、本社区一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
      5、以上声明内容的最终解释权归《晓枫资讯-科技资讯社区》所有。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

  • 打卡等级:即来则安
  • 打卡总天数:17
  • 打卡月天数:0
  • 打卡总奖励:211
  • 最近打卡:2025-04-13 04:48:36
等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
242
积分
38
注册时间
2023-1-1
最后登录
2025-4-13

发表于 2024-11-29 14:05:32 | 显示全部楼层
路过,支持一下
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

  • 打卡等级:即来则安
  • 打卡总天数:26
  • 打卡月天数:0
  • 打卡总奖励:292
  • 最近打卡:2025-04-17 18:13:09
等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
342
积分
60
注册时间
2023-1-2
最后登录
2025-4-17

发表于 2025-3-21 08:33:44 | 显示全部楼层
感谢楼主分享。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
16
积分
12
注册时间
2022-12-28
最后登录
2022-12-28

发表于 2025-4-1 12:49:55 | 显示全部楼层
顶顶更健康!!!
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~
严禁发布广告,淫秽、色情、赌博、暴力、凶杀、恐怖、间谍及其他违反国家法律法规的内容。!晓枫资讯-社区
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1楼
2楼
3楼
4楼

手机版|晓枫资讯--科技资讯社区 本站已运行

CopyRight © 2022-2025 晓枫资讯--科技资讯社区 ( BBS.yzwlo.com ) . All Rights Reserved .

晓枫资讯--科技资讯社区

本站内容由用户自主分享和转载自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

如有侵权、违反国家法律政策行为,请联系我们,我们会第一时间及时清除和处理! 举报反馈邮箱:点击这里给我发消息

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表