中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 一个求昨天日期的批处理,原创,非网络版
作者:
标题: 一个求昨天日期的批处理,原创,非网络版 上一主题 | 下一主题
dguest
新手上路





积分 8
发帖 8
注册 2010-8-15
状态 离线
『楼 主』:  一个求昨天日期的批处理,原创,非网络版

因某些原因本人写了个求昨天日期的批处理,此脚本原创,非网络版(如有雷同,纯属巧合)。起初在网络上也搜了个相关的脚本,但是经测试在计算 set /a dd=08-1的时候会报错,但是搜了很多都是一个版本的脚本,于是之下自己写了个。
先说脚本的大体思路:由于%date%中月和日都是两位表示的,因此比如今天为8号或9号在计算昨天日期的时候就会出现 set /a dd=08-1,报错“无效数字。数字常数只能是十进制(17),十六位进制(0x11)或八进制(021)。”,在此脚本中我是将月和日中两位数分开来分别进行计算和判断的,过程有些复杂(希望大家给出更好的指点),有兴趣的朋友可以帮忙一起测试下,提出问题所在,我会细心的去修改,也希望对此有帮助的朋友可以直接copy走,记得留个名就好。
在脚本中本人未做闰2月的处理,也算是脚本的一个不完善吧,其实是因为我需要不到,因此懒得做了,呵呵。

上代码:


@echo off&setlocal enabledelayedexpansion
@set td1=%date:~8,1%
@set td2=%date:~9,1%
@set tm1=%date:~5,1%
@set tm2=%date:~6,1%

@set /a od2=!td2!-1
set /a od1=%td1%-1
@if %od2%==-1 (
        set od=%od1%9
        goto :isNewUpdate
)
@if %od2%==0 (goto :d2)
set od=%td1%%od2%
goto :isNewUpdate
::普通日期,进行是否更新检测


:d2
if %od1%==-1 (
        goto :checkMonth
        ) else (
        set od=%td1%0
        goto :isNewUpdate
)
::11,21,31三天的前一天日期判断

::01这一天的前一天判断,为30还是31
:checkMonth
set /a om2=%tm2%-1
set /a om1=%tm1%-1
if %om2%==-1 (
        set om=9
        goto :previousMonth
)
if %om2%==0 (
        set od=31
        goto :isNewUpdate
)
set om=%tm1%%om2%
goto :previousMonth

:previousMonth
for %%a in (01 03 05 07 08 10 12) do (
        if !om! == %%a (
        set od=31
        goto :isNewUpdate
        )
)
::如果是1,3,5,7,8,10,12月,设定前一天为31

for %%b in (02 04 06 09 11) do (
        if !om!==%%b (
        set od=30
        goto :isNewUpdate
        )
)
::如果是2,4,6,9,11月,设定前一天为30


:isNewUpdate
echo %od%

2010-8-16 20:25
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dguest
新手上路





积分 8
发帖 8
注册 2010-8-15
状态 离线
『第 2 楼』:  

CNT,谢谢大家支持!

2010-8-16 20:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





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

批处理获取指定天数之前的日期
http://bbs.bathome.net/thread-3330-1-1.html



2010-8-16 23:45
查看资料  发短消息 网志   编辑帖子  回复  引用回复
dguest
新手上路





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

谢谢斑竹

2010-8-18 12:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: