无忧启动论坛

标题: 求助,DOS日期判断语句 [打印本页]

作者: ezyl    时间: 2008-3-21 13:46
标题: 求助,DOS日期判断语句
求助,DOS日期判断语句,
举个日期判断语句的例子,谢谢!
作者: 编程者    时间: 2008-3-21 14:35
顶起来,我正在寻找中,比较日期的大小!
作者: 都市浪子666    时间: 2008-3-21 19:53
要顶呀,偶写了3个小时,不容易呀,







@echo off
rem 读取当天的日期关赋予给变量d
echo %date:~0,10% >date.txt
set /p d=<date.txt
del /q date.txt

rem  截取 当天 年分的数字赋予给变量d1
rem  截取 当天 月分的数字赋予给变量d2
rem  截取 当天 日期的数字赋予给变量d3  
set d1=%d:~0,4%
set d2=%d:~5,2%
set d3=%d:~8,2%

rem  设置比较的日期为2008-03-20并截赋予给变量t  (这个2008-03-20可以随便改,但格式一定要跟这样,否则会出错)
rem  截取年分的数字赋予给变量t1
rem  截取月分的数字赋予给变量t2
rem  截取日期的数字赋予给变量t3  
set t=2008-03-20
set t1=%t:~0,4%
set t2=%t:~5,2%
set t3=%t:~8,2%

rem 如果当天 年分,月分,日期的数字 都等于2008-03-20  就跳转到03
if /i %d1% EQU %t1% (goto 01) ELSE goto bj
:01
if /i %d2% EQU %t2% (goto 02) ELSE goto bj
:02
if /i %d3% EQU %t3% (goto 03) ELSE goto bj
:03
echo 正是2008-03-20
pause
exit

:bj
rem 如果当天 年分的数字 大于 2008 就跳转到dd
rem 如果当天 年分的数字 小于 2008 就跳转到ee
if %d1% GTR %t1% (goto dd)
if %d1% LSS %t1% (goto ee)

rem 如果当天 月分的数字 大于 03 就跳转到dd
rem 如果当天 月分的数字 小于 03 就跳转到ee
if %d2% GTR %t2% (goto dd)
if %d2% LSS %t2% (goto ee)

rem 如果当天 日期的数字 大于 20 就跳转到dd
rem 如果当天 日期的数字 小于 20 就跳转到ee
if %d3% GTR %t3% (goto dd)
if %d3% LSS %t3% (goto ee)

exit
:ee
@echo 今天还没到%t%
pause >nul
exit
:dd
echo 今天过了%t%
pause >nul
exit

[ 本帖最后由 都市浪子666 于 2008-3-22 11:45 AM 编辑 ]
作者: lianjiang    时间: 2008-3-21 20:42
楼上的辛苦了,不过dos下能用吗?
作者: 都市浪子666    时间: 2008-3-21 20:49
原帖由 lianjiang 于 2008-3-21 08:42 PM 发表
楼上的辛苦了,不过dos下能用吗?



在DOS下不能用.
因为在XP和200下的日期格式是 年  月  日


而DOS下的日期格式是  月 日 年

今天比较忙,明天我把日期格式改变一下,然后在dos下测试下,看能不能用

[ 本帖最后由 都市浪子666 于 2008-3-21 08:52 PM 编辑 ]
作者: lianjiang    时间: 2008-3-22 08:02
这种处理方法,dos下是不行的,日期格式仅仅是个不能算是问题的小问题而已。呵呵。
作者: 都市浪子666    时间: 2008-3-22 09:38
dos下不能用,有很多功能在DOS下都用不了,
作者: ezyl    时间: 2008-3-22 11:11
十分感谢!
特别都市浪子666!!!
作者: 都市浪子666    时间: 2008-3-22 14:26
下面的更简单
方法是,读取当天的日期,关把  [ - ]去掉,然后跟设置的日期比较

@echo off
rem 读取当天的日期关赋予给变量d
echo %date:~0,10% >date.txt
set /p d=<date.txt
del /q date.txt

rem  截取 当天 年分的数字赋予给变量d1
rem  截取 当天 月分的数字赋予给变量d2
rem  截取 当天 日期的数字赋予给变量d3  
set d1=%d:~0,4%
set d2=%d:~5,2%
set d3=%d:~8,2%
set dz=%d1%%d2%%d3%

rem  设置比较的日期为2008-03-20并截赋予给变量t  (这个2008-03-20可以随便改,但格式一定要跟这样,否则会出错)
rem  截取年分的数字赋予给变量t1
rem  截取月分的数字赋予给变量t2
rem  截取日期的数字赋予给变量t3
rem  最终目的 就是把2008-03-20这一串字符 中的 [-]去掉,就只剩下数字并赋予给变量t3  感觉这样的有点走弯路了  有点汗,,,
rem  
set t=2008-03-20
set t1=%t:~0,4%
set t2=%t:~5,2%
set t3=%t:~8,2%
set tz=%t1%%t2%%t3%


rem 如果变量dz等于变量tz就跳转到03
rem 如果变量dz大于变量tz就跳转到dd
rem 如果变量dz小于变量tz就跳转到ee
if /i %dz% EQU %tz% (goto 03)
if /i %dz% GTR %tz% (goto dd)
if /i %dz% LSS %tz% (goto ee)
exit
:03
echo 正是2008-03-20
pause >nul
exit

:ee
@echo 今天还没到%t%
pause >nul
exit

:dd
echo 今天过了%t%
pause >nul
exit

[ 本帖最后由 都市浪子666 于 2008-3-22 02:27 PM 编辑 ]
作者: 编程者    时间: 2008-3-24 12:39
非常感谢,正在测试izhong




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3