![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-07 16:34 |
共 48,041 主题排行 / 350,128 发帖 / 今日 3 篇 / 48,252 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 请教如何在WIN2000下提取前一天日期(已结) |
| 可打印版本 771 / 7 |
| 第1楼 fzp1978321 | 发表于 2008-03-06 12:11 |
| 初级用户 发帖 50 积分 110 | |
|
请教如何在WIN2000下提取前一天日期(已结) 这个是在XP下能通过,但是WIN2000下就不行了,请高手指点该如何修改
@echo off FOR /F "TOKENS=1-3 DELIMS=- " %%A IN ('echo %DATE%') do (set Year=%%A&SET Month=%%B&SET Day=%%C) FOR %%A IN (%Year%) DO SET Year=%%A FOR %%A IN (%Month%) DO SET Month=%%A FOR %%A IN (%Day%) DO SET Day=%%A SET SortDate=%Year%%Month%%Day% FOR %%A IN (%Date%) DO SET Today=%%A SET DayS=%Day% IF %DayS% EQU 1 ( SET YesterY=%Year% CALL :RollMonth ) ELSE ( SET /A YesterD=%DayS% - 1 SET YesterM=%Month% SET YesterY=%Year% ) IF %YesterD% LSS 10 SET YesterD=0%YesterD% SET SortYest=%YesterY%-%YesterM%-%YesterD% CALL ECHO %SortYest% ENDLOCAL pause GOTO:EOF :RollMonth IF %Month%==01 ( SET YesterD=31 SET YesterM=12 SET /A YesterY = %Year% - 1 ) IF %Month%==02 ( SET YesterD=31 SET YesterM=01 ) IF %Month%==03 ( SET YesterD=28 SET YesterM=02 CALL :LeapYear ) IF %Month%==04 ( SET YesterD=31 SET YesterM=03 ) IF %Month%==05 ( SET YesterD=30 SET YesterM=04 ) IF %Month%==06 ( SET YesterD=31 SET YesterM=05 ) IF %Month%==07 ( SET YesterD=30 SET YesterM=06 ) IF %Month%==08 ( SET YesterD=31 SET YesterM=07 ) IF %Month%==09 ( SET YesterD=31 SET YesterM=08 ) IF %Month%==10 ( SET YesterD=30 SET YesterM=09 ) IF %Month%==11 ( SET YesterD=31 SET YesterM=10 ) IF %Month%==12 ( SET YesterD=30 SET YesterM=11 ) GOTO:EOF :LeapYear SET /A mod400 = %Year% %% 400 SET /A mod100 = %Year% %% 100 SET /A mod4 = %Year% %% 4 IF %mod400% EQU 0 ( SET YesterD=29 ) ELSE ( IF %mod100% EQU 0 ( SET YesterD=28 ) ELSE ( IF %mod4% EQU 0 ( SET YesterD=29 ) ELSE ( SET YesterD=28 ) ) ) GOTO:EOF :Syntax ECHO PREV: Get yesterday echo %SortYest% [ Last edited by fzp1978321 on 2008-3-6 at 02:14 PM ] |
|
| 第2楼 HAT | 发表于 2008-03-06 12:31 |
| 版主 发帖 5,017 积分 9,023 | |
|
直接调用VBS里面的date()-1可以吗?
|
|
| 第3楼 fzp1978321 | 发表于 2008-03-06 12:33 |
| 初级用户 发帖 50 积分 110 | |
|
恩,可以,只要能实现就行
|
|
| 第4楼 terse | 发表于 2008-03-06 12:39 |
| 银牌会员 发帖 946 积分 2,404 | |
|
参考一个 不知道2000下怎么样
@echo off set p1=%date:~0,4% set p2=%date:~5,2% set p3=%date:~8,2% setlocal enabledelayedexpansion for /l %%a in (1,1,3) do ( for /f "delims=0 tokens=*" %%i in ("!p%%a!") do set p%%a=%%i ) SET TT=1 if %p3% gtr %TT% goto ppp :nxt set/a p2-=1 if %p2% equ 0 set/a p1-=1&&set p2=12 set/a PN2="^!(p1%%4) & ^!(^!(p1%%100)) | ^!(p1%%400)",PN2=28+PN2 for /f "tokens=%p2%" %%i in ("31 %pN2% 31 30 31 30 31 31 30 31 30 31") do set/a p3=%p3%+%%i if %p3% leq %tt% goto nxt :ppp set/a p3=%p3%-%tt% set p2=0%p2% set p2=%p2:~-2,2% set p3=0%p3% set p3=%p3:~-2,2% echo %p1%-%p2%-%p3% pause [ Last edited by terse on 2008-3-6 at 12:43 PM ] |
|
| 第5楼 HAT | 发表于 2008-03-06 12:58 |
| 版主 发帖 5,017 积分 9,023 | |
| 第6楼 fastslz | 发表于 2008-03-06 13:08 |
| 铂金会员 发帖 2,315 积分 5,493 来自 上海 | |
|
VBS计算当前日期加减日期
@echo off |
|
| 第7楼 fastslz | 发表于 2008-03-06 13:16 |
| 铂金会员 发帖 2,315 积分 5,493 来自 上海 | |
|
简化这样就可以了,但是兼容性不强,而6楼不存在BUG
|
|
| 第8楼 fzp1978321 | 发表于 2008-03-06 14:13 |
| 初级用户 发帖 50 积分 110 | |
|
谢谢各位,问题已经解决!
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |