[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[日期时间] [已解决]判断日期的批处理代码,为什么在每月8号9号执行错误?

本帖最后由 sunjushi 于 2012-10-8 11:27 编辑
  1. @echo off
  2. setlocal ENABLEDELAYEDEXPANSION
  3. set TodayYear=%date:~0,4%
  4. set TodayMon=%date:~5,2%
  5. set TodayDay=%date:~8,2%
  6. set LastdayYear=
  7. set LastdayMon=
  8. set LastdayDay=
  9. set LastdayYear=%TodayYear%
  10. set LastdayMon=%TodayMon%
  11. set /A LastdayDay=TodayDay-1
  12. if "%LastdayDay%" == "0" (
  13.         if "!LastdayMon!" == "01" (
  14.                 set LastdayMon=12
  15.                 set /A LastdayYear-=1
  16.         ) else (
  17.                 set /A LastdayMon-=1
  18.                 if "!LastdayMon!" == "1" set LastdayMon=01
  19.                 if "!LastdayMon!" == "2" set LastdayMon=02
  20.                 if "!LastdayMon!" == "3" set LastdayMon=03
  21.                 if "!LastdayMon!" == "4" set LastdayMon=04
  22.                 if "!LastdayMon!" == "5" set LastdayMon=05
  23.                 if "!LastdayMon!" == "6" set LastdayMon=06
  24.                 if "!LastdayMon!" == "7" set LastdayMon=07
  25.                 if "!LastdayMon!" == "8" set LastdayMon=08
  26.                 if "!LastdayMon!" == "9" set LastdayMon=09
  27.         )
  28.         if "!LastdayMon!" == "01" set LastdayDay=31
  29.         if "!LastdayMon!" == "03" set LastdayDay=31
  30.         if "!LastdayMon!" == "04" set LastdayDay=30
  31.         if "!LastdayMon!" == "05" set LastdayDay=31
  32.         if "!LastdayMon!" == "06" set LastdayDay=30
  33.         if "!LastdayMon!" == "07" set LastdayDay=31
  34.         if "!LastdayMon!" == "08" set LastdayDay=31
  35.         if "!LastdayMon!" == "09" set LastdayDay=30
  36.         if "!LastdayMon!" == "10" set LastdayDay=31
  37.         if "!LastdayMon!" == "11" set LastdayDay=30
  38.         if "!LastdayMon!" == "12" set LastdayDay=31
  39.         if "!LastdayMon!" == "02" (
  40.                 set IsLeapYear=
  41.                 set /A IsLeapYear=!LastdayYear!%%400
  42.                 if "!IsLeapYear!" == "0" (
  43.                         set LastdayDay=29
  44.                         goto MAKELASTDATE
  45.                 )
  46.                 set /A IsLeapYear=!LastdayYear!%%100
  47.                 if "!IsLeapYear!" == "0" (
  48.                         set LastdayDay=28
  49.                         goto MAKELASTDATE
  50.                 )
  51.                 set /A IsLeapYear=!LastdayYear%%4
  52.                 if "!IsLeapYear!" == "0" (
  53.                         set LastdayDay=29
  54.                         goto MAKELASTDATE
  55.                 ) else (
  56.                         set LastdayDay=28
  57.                         goto MAKELASTDATE
  58.                 )
  59.         )
  60. )
  61. :MAKELASTDATE
  62. if "%LastdayDay%" == "1" set LastdayDay=01
  63. if "%LastdayDay%" == "2" set LastdayDay=02
  64. if "%LastdayDay%" == "3" set LastdayDay=03
  65. if "%LastdayDay%" == "4" set LastdayDay=04
  66. if "%LastdayDay%" == "5" set LastdayDay=05
  67. if "%LastdayDay%" == "6" set LastdayDay=06
  68. if "%LastdayDay%" == "7" set LastdayDay=07
  69. if "%LastdayDay%" == "8" set LastdayDay=08
  70. if "%LastdayDay%" == "9" set LastdayDay=09
  71. set LastDate=%LastdayYear%%LastdayMon%%LastdayDay%
  72. set TodayDate=%TodayYear%%TodayMon%%TodayDay%
  73. echo %LastDate%
  74. echo %TodayDate%
  75. pause
复制代码
LastDate在8号和9号无法正确显示,求助原因!
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

说实话,你的代码我没看,不过这应是进制的问题,0+数字被P处理默认为8进制,而在8进制中08。09是无效数字。所以就悲句了
当然这只是我自已的想法而以
1

评分人数

枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

调整一下前面变量的赋值
  1. set /a TodayYear=%date:~0,4%,TodayMon=1%date:~5,2%%%100,TodayDay=1%date:~8,2%%%100
复制代码
1

评分人数

TOP

回复 2# wc726842270


    我后来在第85行加了两行代码。
  1. if "%TodayDay%" == "08" set LastdayDay=07
  2. if "%TodayDay%" == "09" set LastdayDay=08
复制代码
然后就不存在错误的现象了。好像就是你说的那个原因,那有没有什么简单判断日期的方法么?主要判断当天和前一天日期。

TOP

本帖最后由 sunjushi 于 2012-10-8 10:53 编辑

回复 3# terse


    按照你的改过之后,昨天日期正确显示了,还需要在下面加上
  1. if "%TodayDay%" == "1" set TodayDay=01
  2. if "%TodayDay%" == "2" set TodayDay=02
  3. if "%TodayDay%" == "3" set TodayDay=03
  4. if "%TodayDay%" == "4" set TodayDay=04
  5. if "%TodayDay%" == "5" set TodayDay=05
  6. if "%TodayDay%" == "6" set TodayDay=06
  7. if "%TodayDay%" == "7" set TodayDay=07
  8. if "%TodayDay%" == "8" set TodayDay=08
  9. if "%TodayDay%" == "9" set TodayDay=09
复制代码
才可以正确显示当天日期

TOP

回复 4# sunjushi
这个有  搜索本坛

TOP

返回列表