中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]批处理能做日期运算吗?
« [1] [2] [3] [4] »
作者:
标题: [已结]批处理能做日期运算吗? 上一主题 | 下一主题
newrogram
新手上路





积分 5
发帖 1
注册 2007-3-26
状态 离线
『楼 主』:  [已结]批处理能做日期运算吗?

比如日期为2007-01-01,如何计算前一天的日期
               2007-03-01,如何计算前一天的日期

[ Last edited by HAT on 2008-10-25 at 18:27 ]

   此帖被 +1 点积分    点击查看详情   
评分人:【 joyezzu 分数: +1  时间:2009-8-29 05:25


2007-3-26 05:09
查看资料  发送邮件  发短消息 网志   编辑帖子
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 2 楼』:  


To newrogram:

  对于批处理来计算日期的问题,一般会比较麻烦,我推荐你用下面这个命令行工具(DateX.exe),它可以很好的完成日期的计算问题。

  下面给几个演示的例子:

  Quote:
::计算2007-01-01的前1天:
C:\>datex -d 2007-01-01 -f yyyy-mm-dd -o -1
2006-12-31

::计算2007--03-07的后7天:
C:\>datex -d 2007-03-07 -f yyyy\mm\dd -o 7
2007\03\14

  说明:-d 参数后面指定日期,如果不指定,就是当前日期了;-f 参数后面指定输出的日期格式,可以灵活变化;-o 参数后面指定要计算的天数,正数表示向后计算,负数表示向前计算。


   此帖被 +1 点积分    点击查看详情   
评分人:【 分数: +1  时间:2010-6-10 10:15


附件 1: datex.rar (2007-3-26 07:44, 34.22 K, 下载附件所需积分 1 点 ,下载次数: 239)
2007-3-26 07:44
查看资料  发送邮件  发短消息 网志   编辑帖子
flyinspace
银牌会员





积分 1206
发帖 517
注册 2007-3-25
状态 离线
『第 3 楼』:  

呵呵,利用%time:~0,2%截取的变量可以完成呢。

我就做了一个判断是否闰年的小东西出来玩。。

2007-3-26 14:31
查看资料  发短消息 网志   编辑帖子
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 4 楼』:  



  Quote:
Originally posted by flyinspace at 2007-3-26 01:31:
呵呵,利用%time:~0,2%截取的变量可以完成呢。

我就做了一个判断是否闰年的小东西出来玩。。


兄写错了吧,time 是计算时间的,而楼主是想计算日期;

另外,批处理计算日期的确比较麻烦,比如计算1900-04-11的前70天如何计算呢?除了要判断月份的大小(30或者31天)之外,还要判断是否是闰年的问题,我想问题还是比较复杂的。

我还是推荐用这个工具来完成。


[ Last edited by lxmxn on 2007-3-26 at 02:59 PM ]

2007-3-27 00:13
查看资料  发送邮件  发短消息 网志   编辑帖子
fjcase
初级用户





积分 53
发帖 23
注册 2007-2-2
状态 离线
『第 5 楼』:  

没有自带的工具可以用吗?

2007-3-27 03:34
查看资料  发短消息 网志   编辑帖子
flyinspace
银牌会员





积分 1206
发帖 517
注册 2007-3-25
状态 离线
『第 6 楼』:  



  Quote:
Originally posted by lxmxn at 2007-3-26 11:13 AM:


兄写错了吧,time 是计算时间的,而楼主是想计算日期;

另外,批处理计算日期的确比较麻烦,比如计算1900-04-11的前70天如何计算呢 ...

不好意思.我写错了。

计算日期确实比较麻烦.
至于你说的就要靠自定义了
例如.
     1,定义一年12个月每一个月的天数.
     2,定义输入的年份,之前的天还是之后的.多少天.
     3,判断是否闰年
     4,是闰年则2月加一天.不是则不变
     5,两个call 做自加和自减运算(天数的运算)<其中要包含对年,月,日的考虑>
     这个写得比较麻烦...虽然我已经写出来了。但好象没有多大意义..
     还不如直接用c++写呢.那样代码简单得多.

2007-3-27 05:38
查看资料  发短消息 网志   编辑帖子
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 7 楼』:  



  Quote:
Originally posted by flyinspace at 2007-3-26 16:38:


不好意思.我写错了。

计算日期确实比较麻烦.
至于你说的就要靠自定义了
例如.
     1,定义一年12个月每一个月的天数.
     2,定义输入的年份,之 ...


  不需要用C++编写了,2楼的工具就可以了。


2007-3-27 05:47
查看资料  发送邮件  发短消息 网志   编辑帖子
flyinspace
银牌会员





积分 1206
发帖 517
注册 2007-3-25
状态 离线
『第 8 楼』:  

嗯。同意:)
已经有的工具何必还要再写呢:)
而且还是免费的。哈哈。
再说了。这个问题好简单。也不是写不出来。

2007-3-27 05:54
查看资料  发短消息 网志   编辑帖子
stornager
中级用户

scriptlover


积分 328
发帖 131
注册 2007-3-25
状态 离线
『第 9 楼』:  2楼的工具GREAT。

谢谢楼住引荐。

2007-3-27 05:57
查看资料  发送邮件  发短消息 网志   编辑帖子
pz
新手上路





积分 10
发帖 5
注册 2007-2-27
状态 离线
『第 10 楼』:  

2楼的工具不错。

2007-3-27 13:41
查看资料  发短消息 网志   编辑帖子
flyinspace
银牌会员





积分 1206
发帖 517
注册 2007-3-25
状态 离线
『第 11 楼』:  



  Quote:
Originally posted by lxmxn at 2007-3-25 06:44 PM:

To newrogram:

  对于批处理来计算日期的问题,一般会比较麻烦,我推荐你用下面这个命令行工具(DateX.exe),它可以很好的完成日期的 ...

想问一下。。

若是我把我写的计算日期的批处理拿出来分享是不是比较无聊??

而且写的批处理判断分之太多。。

感觉在这里拿出来会比较丢人。

2007-3-27 13:54
查看资料  发短消息 网志   编辑帖子
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 12 楼』:  


To flyinspace:

  兄如果可以发出来,那再好不过了,也是一种方法、一种思路嘛,也可以让论坛的朋友学习一下,改进一下。


2007-3-27 23:12
查看资料  发送邮件  发短消息 网志   编辑帖子
29984365
初级用户





积分 39
发帖 15
注册 2007-4-4
状态 离线
『第 13 楼』:  

这个东西貌似很好玩

2007-4-4 05:09
查看资料  发短消息 网志   编辑帖子
wqjcaogen
初级用户





积分 22
发帖 7
注册 2007-4-5
状态 离线
『第 14 楼』:  可以试试这个

echo dt=cdate(#01/01/07#)-1>%temp%\tmp.vbs
echo s=right(year(dt),4) ^& "-" ^& right("0" ^& month(dt),2) ^& "-" ^& right("0" ^& day(dt),2)>>%temp%\tmp.vbs
echo wscript.echo s>>%temp%\tmp.vbs
for /f %%i in ('cscript /nologo %temp%\tmp.vbs') do @echo %%i

2007-4-5 06:00
查看资料  发送邮件  发短消息 网志   编辑帖子
slore
铂金会员





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

right(year(dt),4) ^& "-" ^& right("0" ^& month(dt),2) ^& "-" ^& right("0" ^& day(dt),2)?

echo s=year(dt) ^& "-" ^& month(dt) ^& "-" ^& day(dt)>>%temp%\tmp.vbs不是更简单?

   此帖被 +1 点积分    点击查看详情   
评分人:【 mazai 分数: +1  时间:2009-6-9 21:33


2007-4-5 07:11
查看资料  发短消息 网志   编辑帖子
« [1] [2] [3] [4] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: