DOS 下怎么将昨天的日期格式显示

当前的好说%date:~0,4%%date:~5,2%%date:~8,2%显示为YYYYMMDD可是前一天的怎么弄?假如今天是2010/03/29,我怎么得到20100... 当前的好说 %date:~0,4%%date:~5,2%%date:~8,2% 显示为YYYYMMDD
可是前一天的怎么弄?
假如今天是2010/03/29,我怎么得到20100328!!
我要的结果就是一个字符串,这个字符串就是昨天的日期,如何用批处理获得?
问题已解决了
set now=%date:~8,2%
set /a yester=now-1
echo %date:~0,4%%date:~5,2%%yester%
展开
 我来答
云上他
2010-03-29 · TA获得超过3551个赞
知道小有建树答主
回答量:1499
采纳率:0%
帮助的人:797万
展开全部
呵呵,楼主在学DOS啊。
要解决的就是每月一号的前一天是多少的问题
本年是否为闰年,本月奇偶
学过C语言的话,书上有算法
----网上找了个,如下-------
@echo off
set dt=%date:~0,10%
rem date format is "YYYY-MM-DD"
rem set /P dt="Input Date: "
set dy=%dt:~0,4%
set dm=%dt:~5,2%
set dd=%dt:~8,2%
if %dm%%dd%==0101 goto L01
if %dm%%dd%==0201 goto L02
if %dm%%dd%==0301 goto L07
if %dm%%dd%==0401 goto L02
if %dm%%dd%==0501 goto L04
if %dm%%dd%==0601 goto L02
if %dm%%dd%==0701 goto L04
if %dm%%dd%==0801 goto L02
if %dm%%dd%==0901 goto L02
if %dm%%dd%==1001 goto L05
if %dm%%dd%==1101 goto L03
if %dm%%dd%==1201 goto L06
if %dd%==02 goto L10
if %dd%==03 goto L10
if %dd%==04 goto L10
if %dd%==05 goto L10
if %dd%==06 goto L10
if %dd%==07 goto L10
if %dd%==08 goto L10
if %dd%==09 goto L10
if %dd%==10 goto L11
set /A dd=dd-1
set dt=%dy%-%dm%-%dd%
goto END

:L10
set /A dd=%dd:~1,1%-1
set dt=%dy%-%dm%-0%dd%
goto END

:L11
set dt=%dy%-%dm%-09
goto END

:L02
set /A dm=%dm:~1,1%-1
set dt=%dy%-0%dm%-31
goto END

:L04
set /A dm=dm-1
set dt=%dy%-0%dm%-30
goto END

:L05
set dt=%dy%-09-30
goto END

:L03
set dt=%dy%-10-31
goto END

:L06
set dt=%dy%-11-30
goto END

:L01
set /A dy=dy-1
set dt=%dy%-12-31
goto END

:L07
set /A "dd=dy%%4"
if not %dd%==0 goto L08
set /A "dd=dy%%100"
if not %dd%==0 goto L09
set /A "dd=dy%%400"
if %dd%==0 goto L09

:L08
set dt=%dy%-02-28
goto END

:L09
set dt=%dy%-02-29
goto END

:END
rem 执行程序部分
echo %dt:~0,4%%dt:~5,2%%dt:~8,2%
pause
------------------------------------------

呵呵,又找到个:
@echo off&setlocal enabledelayedexpansion
set yyyy=%date:~0,4%
set mm=%date:~5,2%
set dd=%date:~8,2%
set /a od=!dd!-1
if !od!==0 call :dd0
if !mm!==0 call :mm0
rem set yyyymmdd=!yyyy!年!mm!月!od!日
echo !yyyy!!mm!!od!
pause

:dd0
set /a mm=!mm!-1
for %%a in (1 3 5 7 8 10 12)do set %%add=31
set /a pddd=!yyyy!*10/4
set pd2d=!pddd:~-1,1!
set 2dd=28
if !pd2d!==0 set 2dd=29
for %%b in (4 6 9 11)do set %%bdd=30
set od=!%mm%dd!
goto :eof
雪山肥浪
2010-03-29 · TA获得超过2691个赞
知道大有可为答主
回答量:9687
采纳率:100%
帮助的人:5510万
展开全部
参考:

DOS日期格式设置

%date% 和 %time%
2008-10-21 21:34:11.56
C:\>echo %date%
2008-10-21 星期二

C:\>echo %date:~0,4%
2008

盘符:\>输出 %date%是一个参数 但是他后面带的这些就是取值范围,说说后面的数值第一个0代表从头开始 后面的4代表共取4个字符

C:\>echo %date:~-3%
星期三
这里面的负数代表倒数,也就取最后3个字符
C:\>echo %date:~-3,-1%
星期
这里的-1是不输出最后1个字符-2当然是2个类推

time也类似

echo %time%

21:34:11.56
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b86f5ade9
2010-03-29 · TA获得超过1.1万个赞
知道小有建树答主
回答量:2227
采纳率:0%
帮助的人:1317万
展开全部
学习啦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式