中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请问如何能输出上周7天对应的日期
作者:
标题: 请问如何能输出上周7天对应的日期 上一主题 | 下一主题
zhengdan
新手上路





积分 6
发帖 4
注册 2009-4-16
状态 离线
『楼 主』:  请问如何能输出上周7天对应的日期

比如今天是2009-9-3,那么上周7天的日期为:
2009-8-24
2009-8-25
……
2009-8-30

2009-9-3 10:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
jmz573515
银牌会员




积分 1212
发帖 464
注册 2006-12-13
状态 离线
『第 2 楼』:  

这个用VBS更简单吧
for i=7 to 1 step -1
        s = s & date-i & vbcrlf
next
msgbox s


2009-9-3 10:51
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 3 楼』:  



  Quote:
Originally posted by jmz573515 at 2009-9-3 10:51:
这个用VBS更简单吧
for i=7 to 1 step -1
        s = s & date-i & vbcrlf
next
msgbox s

是上一周的7天,不是7天前。


不过这个确实不适合用批处理做:
因为用批处理做首先必须先处理如08,09这样的数字,否则会出现进制运算错误
然后计算上一周的周日的数字:
如果数值为负数,即从上一月开始计算。。。
上个月,也许就上到前一年了。。。
然后得按7月大,8月小计算每个月的月长。。。
然后再按是否是润年考虑2月的情况。。。
麻烦着呢,想着都头大。。。
@echo off&setlocal enabledelayedexpansion
echo 日期必须符合 2009-09-03 星期四 这类的格式
for /f "tokens=1-3 delims=-:/ " %%i in ("%date%") do set Xing1=%%i%%j%%k
:Hy
if "!Xing1:~%Gu1%,1!" neq "" set /a Gu1+=1 &goto Hy
if %Gu1% lss 8 (echo 日期格式错误 &pause &goto :eof)
:Gx
set /p Han1=要从周日作为一周开始,请键入7;要从周一开始,请键入1.然后按回车继续:
if "%Han1%" equ "7" set /a Xing3=3&goto :Hygx
if "%Han1%" equ "1" set /a Xing3=4&goto :Hygx
echo 键入错误,请按任意键重新开始
pause>nul
goto :Gx
:Hygx
set Han2=寒夜孤星日一二三四五六日
if %date:~8,1% equ 0 (set Ye1=%date:~9,1%) else set Ye1=%date:~8,2%
if %date:~5,1% equ 0 (set Ye2=%date:~6,1%) else set Ye2=%date:~5,2%
for /l %%i in (5,1,11) do if "!Han2:~%%i,1!" equ "%date:~13,1%" set /a Hanye1=%Ye1%-%%i+%Han1%-3
if %Hanye1% lss 1 (set /a Gu1=%Ye2%-1) else set Gu1=%Ye2%
if %Gu1% lss 1 (set /a Gu1=12,Guxing2=%date:~0,4%-1) else set /a Guxing2=%date:~0,4%
for %%a in (1:31 2:28 3:31 4:30 5:31 6:30 7:31 8:31 9:30 10:31 11:30 12:31) do for /f "tokens=1,2 delims=:" %%i in ("%%a") do if %Gu1% equ %%i set Xing1=%%j
set /a Guxing1=%Guxing2%%%4
if %Gu1% equ 2 if %Guxing1% equ 0 set Xing1=29
if %Gu1% lss 10 set Gu1=0%Gu1%&echo.&echo 今天是:&echo %date%&echo.&echo 上周是:
set /a Hanye2=%Hanye1%+6
for /l %%i in (%Hanye1%,1,%Hanye2%) do (
        if %%i lss 1 (set /a Xing2=%Xing1%+%%i) else set /a Xing2=%%i
        set /a Xing3+=1
        set Xing2=0!Xing2!
        if %%i lss 1 (call echo %Guxing2%-%Gu1%-!Xing2:~-2! 星期%%Han2:~!Xing3!,1%%) else call echo %date:~0,4%-%date:~5,2%-!Xing2:~-2! 星期%%Han2:~!Xing3!,1%%
)
pause>nul
[ Last edited by Hanyeguxing on 2009-9-6 at 12:41 ]



批处理之家 http://bbs.bathome.net/forum-5-1.html
2009-9-3 11:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
keen
初级用户





积分 58
发帖 29
注册 2008-8-15
状态 离线
『第 4 楼』:  

呵呵,自己造的,大侠不要笑~~
dtmToday = Date()
DayOfWeek = DatePart("w", dtmToday)
i = DayOfWeek - 2
UpWeekLastDay = dtmToday - i
For a = 1 to 7
    UpWeekEveryDay = UpWeekLastDay - a & chr(13) & UpWeekEveryDay
Next
Wscript.Echo UpWeekEveryDay


   此帖被 +4 点积分        点击查看详情   
评分人:【 Hanyeguxing 分数: +4  时间:2009-9-4 05:50


2009-9-4 01:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 5 楼』:  

这一点上,vbs就是比纯P好。。。



批处理之家 http://bbs.bathome.net/forum-5-1.html
2009-9-4 05:50
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 6 楼』:  seem this is an easy way...

startday = Date - (Weekday(Date) + 6)
For i = 1 To 7
    UpWeekEveryDay = UpWeekEveryDay & startday + i & vbCrLf
Next
Wscript.Echo UpWeekEveryDay



S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
2009-9-4 12:58
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: