Board logo

标题: [已结]批处理能做日期运算吗? [打印本页]

作者: newrogram     时间: 2007-3-26 05:09    标题: [已结]批处理能做日期运算吗?
比如日期为2007-01-01,如何计算前一天的日期 2007-03-01,如何计算前一天的日期 [ Last edited by HAT on 2008-10-25 at 18:27 ]

作者: lxmxn     时间: 2007-3-26 07:44
To newrogram:   对于批处理来计算日期的问题,一般会比较麻烦,我推荐你用下面这个命令行工具(DateX.exe),它可以很好的完成日期的计算问题。   下面给几个演示的例子:
::计算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: datex.rar (2007-3-26 07:44, 34.22 KiB, 下载附件所需积分 1点 ,下载次数: 239)

作者: flyinspace     时间: 2007-3-26 14:31
呵呵,利用%time:~0,2%截取的变量可以完成呢。 我就做了一个判断是否闰年的小东西出来玩。。

作者: lxmxn     时间: 2007-3-27 00:13
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 ]

作者: fjcase     时间: 2007-3-27 03:34
没有自带的工具可以用吗?

作者: flyinspace     时间: 2007-3-27 05:38
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++写呢.那样代码简单得多.

作者: lxmxn     时间: 2007-3-27 05:47
Originally posted by flyinspace at 2007-3-26 16:38: 不好意思.我写错了。 计算日期确实比较麻烦. 至于你说的就要靠自定义了 例如. 1,定义一年12个月每一个月的天数. 2,定义输入的年份,之 ...
  不需要用C++编写了,2楼的工具就可以了。

作者: flyinspace     时间: 2007-3-27 05:54
嗯。同意:) 已经有的工具何必还要再写呢:) 而且还是免费的。哈哈。 再说了。这个问题好简单。也不是写不出来。

作者: stornager     时间: 2007-3-27 05:57    标题: 2楼的工具GREAT。
谢谢楼住引荐。

作者: pz     时间: 2007-3-27 13:41
2楼的工具不错。

作者: flyinspace     时间: 2007-3-27 13:54
Originally posted by lxmxn at 2007-3-25 06:44 PM: To newrogram:   对于批处理来计算日期的问题,一般会比较麻烦,我推荐你用下面这个命令行工具(DateX.exe),它可以很好的完成日期的 ...
想问一下。。 若是我把我写的计算日期的批处理拿出来分享是不是比较无聊?? 而且写的批处理判断分之太多。。 感觉在这里拿出来会比较丢人。

作者: lxmxn     时间: 2007-3-27 23:12
To flyinspace:   兄如果可以发出来,那再好不过了,也是一种方法、一种思路嘛,也可以让论坛的朋友学习一下,改进一下。

作者: 29984365     时间: 2007-4-4 05:09
这个东西貌似很好玩

作者: wqjcaogen     时间: 2007-4-5 06:00    标题: 可以试试这个
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

作者: slore     时间: 2007-4-5 07:11
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不是更简单?

作者: slore     时间: 2007-4-5 07:12
要是能用format多好

作者: lxmxn     时间: 2007-4-5 08:43
Originally posted by slore at 2007-4-4 18:12: 要是能用format多好
2楼的工具就支持format啊...

作者: nbic     时间: 2007-4-14 09:47
学习了。

作者: songk     时间: 2007-4-29 10:10
请问: 如果我要拿当前日期,是不是最好的方法就是用DateX. 但是我有个问题是: 我要哪一个文件名是:日期形式的。例如:20070507 那如何用DateX 来实现这样的功能呢〉? 我在单个的命令。我知道,可以这样: DateX -f yyyymmdd -o -1 但是如何实现我得的要求呢〉  如果我取目前日期我可以直接这样: Copy C:\%date:!........txt c:\backup\ 中间省了。 用DateX该如何做呢?? 谢谢!

作者: songk     时间: 2007-4-29 10:42
Originally posted by songk at 2007-4-28 09:10 PM: 请问: 如果我要拿当前日期,是不是最好的方法就是用DateX. 但是我有个问题是: 我要哪一个文件名是:日期形式的。例如:20070507 那如何用DateX 来 ...
我有了下面的方法: setlocal enabledelayedexpansion DateX -f yyyymmdd -o -1 >temp.txt for /f "delims=" %%a in (temp.txt) do ( set "t=%%a" ) copy c:\%t%.TXT E:\DateX_2.5\ 高手给点意见??  我要实现的功能是定时把当前的前一天的日期为名称的文件copy到指定的文件夹。

作者: songk     时间: 2007-4-30 01:51
Originally posted by songk at 2007-4-28 09:42 PM: 我有了下面的方法: setlocal enabledelayedexpansion DateX -f yyyymmdd -o -1 >temp.txt for /f "delims=" %%a in (temp.txt) do ( set "t=%%a" ) copy c:\%t ...
怎么都没有人啊????

作者: vkill     时间: 2007-5-7 08:50
for set/a

作者: lxmxn     时间: 2007-5-7 15:55
To songk: 直接用for和copy就可以完成了,不需要设置变量延迟和写入文件。

作者: zhoushijay     时间: 2007-5-8 13:02
我以前也过一个,不借助第3方可以的,把所有特殊情况拿出来处理了,不过代码也比较烦琐。

作者: lililulula     时间: 2007-5-8 14:44
日期的处理感觉还是vbs来的简单点,然后将所得参数格式进行变换,之前就在做这个,现在已经搞定了.楼主对日期格式有要求的话可以用set自己变换.

作者: iowind     时间: 2007-5-11 01:18
好东西

作者: ttyp     时间: 2007-5-11 09:18
用工具还不如用VBS脚本,dateadd

作者: shale     时间: 2007-5-12 01:17
看贴回贴,养成好习惯

作者: shale     时间: 2007-5-12 01:18
看贴回贴,养成好习惯

作者: lxmxn     时间: 2007-5-12 01:29
楼上的 shale ,看帖回一次贴就够了,不必要回两次甚至更多次无关紧要的帖子,否则将被扣除相应积分。

作者: jfc1639     时间: 2007-5-12 11:21    标题: 有使用文档吗
怎么使用该工具?

作者: yovie     时间: 2007-8-30 15:31
怀念willsort!

作者: dazui     时间: 2007-9-21 17:08
好工具,我打算用一下

作者: acme     时间: 2007-10-10 20:51
这个工具怎么使用啊?

作者: 3721     时间: 2007-10-17 10:40
写得不错!

作者: huaying311     时间: 2007-11-1 13:39
dfdddddddd

作者: zhangqy     时间: 2007-12-13 13:57
好工具啊

作者: zhangqy     时间: 2007-12-13 14:03
发现工具无法下载啊 IWSA Security Event (iwsa2500)

作者: vonray     时间: 2007-12-17 14:32
这个程序是编出来的吗?

作者: lidxgz     时间: 2008-1-18 11:34
正好需要呢

作者: idolumsky     时间: 2008-3-4 19:51
Originally posted by lxmxn at 2007-5-7 03:55 PM: To songk: 直接用for和copy就可以完成了,不需要设置变量延迟和写入文件。
不太明白能写出来么 谢谢啊 !!!

作者: idolumsky     时间: 2008-3-4 19:56
Originally posted by songk at 2007-4-29 10:10 AM: 请问: 如果我要拿当前日期,是不是最好的方法就是用DateX. 但是我有个问题是: 我要哪一个文件名是:日期形式的。例如:20070507 那如何用DateX 来 ...
同求方法啊!!!!谢谢高手门了

作者: pangyg     时间: 2008-3-18 17:38
DOS 中的时间变量?

作者: gdjada     时间: 2008-5-19 14:26    标题: 怎么下载
怎么下载

作者: lnczx     时间: 2008-5-29 16:13
没法下载啊,咋办

作者: sherman3     时间: 2008-6-1 15:22
正好要用,拿来试试。谢谢!

作者: top     时间: 2008-6-1 16:09
学习.......................

作者: wwjjyyff     时间: 2008-8-19 16:14    标题: 好东西呀

作者: gyepc     时间: 2008-8-19 17:09
thanks you!!!

作者: wl1356     时间: 2008-8-27 10:34    标题: 不错
不错,谢谢!

作者: huosong66     时间: 2008-8-27 23:04
新人来报个道!

作者: userid9820     时间: 2008-10-25 16:51    标题: 想看一下
想看一下

作者: zhjshitc     时间: 2008-12-16 01:08
能不能不用工具或VBS就BAT做出来?