中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]获取两天前日期 要求日期不满2位加0
作者:
标题: [求助]获取两天前日期 要求日期不满2位加0 上一主题 | 下一主题
p1509101
中级用户

海浪人生


积分 206
发帖 103
注册 2007-7-4
状态 离线
『楼 主』:  [求助]获取两天前日期 要求日期不满2位加0

@echo off
for /f %%a in ('echo wscript.echo date-2 ^>t~.vbs ^& cscript //nologo t~.vbs ^& del t~.vbs') do set mydate=%%a
echo %mydate%
echo.&pause

这个是论坛高人写的
但是仅仅不能像 BAT那样
我的要求日期格式是
2008-10-08
而是不是 2008-10-8
希望高手修改一下
或者纯BAT也行 不过BAT 在1号的前两天 处理很头疼。。

2008-10-8 15:20
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
p1509101
中级用户

海浪人生


积分 206
发帖 103
注册 2007-7-4
状态 离线
『第 2 楼』:  

呵呵 没关系 已经论坛里面找到答案了
谢谢!是我不好 没用心找 就发贴。。。
不过我找到的答案BAT的 太臃肿了。。。

2008-10-8 15:33
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 3 楼』:  Re 2楼

贴出来让大家帮你优化一下?



2008-10-8 15:53
查看资料  发短消息 网志   编辑帖子  回复  引用回复
p1509101
中级用户

海浪人生


积分 206
发帖 103
注册 2007-7-4
状态 离线
『第 4 楼』:  


@echo off

setlocal enabledelayedexpansion

:Main
cls
:: 日期可以带星期,但是,必须以年月日的顺序排列
:: 年份必须是四位,否则会出错
set day=%date%
set days=0
echo.&echo.
echo       指定的日期是:%day%
echo.      
set input=2

:: 提取日期
for /f "tokens=1-3 delims=-/. " %%i in ("%day%") do (
    set /a sy=%%i, sm=100%%j %% 100, sd=100%%k %% 100
)

set /a sd-=input

if %sd% leq 0 call :count

cls
echo.&echo.
echo       指定的日期是:%day%
echo.
set sm=0%sm%
set sd=0%sd%
echo       %input% 天前的日期是:%sy%-%sm:~-2%-%sd:~-2%
RD /S /Q %sy%-%sm:~-2%-%sd:~-2% && echo %date%  删除 %sy%-%sm:~-2%-%sd:~-2%日期录像成功 >>删除记录日志.txt
exit
:count
set /a sm-=1
if !sm! equ 0 set /a sm=12, sy-=1
call :days
set /a sd+=days
if %sd% leq 0 goto count
goto :eof

:days
:: 获取指定月份的总天数
set /a leap="^!(sy %% 4) & ^!(^!(sy %% 100)) | ^!(sy %% 400)"
set /a max=28+leap
set num=0
set str=31 %max% 31 30 31 30 31 31 30 31 30 31
for %%i in (%str%) do (
    set /a num+=1
    if %sm% equ !num! set days=%%i&goto :eof
)
goto :eof
呵呵 依旧是本论坛里面的 的确有点臃肿了  不过还好 能解决问题 现在我要删的是前两天的

2008-10-17 19:47
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 5 楼』:  

把一楼的修改一下
@echo off&setlocal enabledelayedexpansion
for /f "tokens=1,2,3 delims=-" %%a in ('echo wscript.echo date-2 ^>t~.vbs ^& cscript //nologo t~.vbs ^& del t~.vbs') do (
    set y=%%a&set m=%%b&set d=%%c
    if %%b lss 10 set m=0%%b&if %%c lss 10 set d=0%%c
    echo !y!-!m!-!d!
)
echo.&pause




简单!简单!再简单!
2008-10-17 20:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: