标题: [已结]批处理能做日期运算吗?
[打印本页]
作者: 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),它可以很好的完成日期的计算问题。
下面给几个演示的例子:
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:
datex.rar (2007-3-26 07:44, 34.22 K, 下载附件所需积分 1点
,下载次数: 239)
作者: flyinspace
时间: 2007-3-26 14:31
呵呵,利用%time:~0,2%截取的变量可以完成呢。
我就做了一个判断是否闰年的小东西出来玩。。
作者: lxmxn
时间: 2007-3-27 00:13
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 ]
作者: fjcase
时间: 2007-3-27 03:34
没有自带的工具可以用吗?
作者: flyinspace
时间: 2007-3-27 05:38
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++写呢.那样代码简单得多.
作者: lxmxn
时间: 2007-3-27 05:47
Quote: |
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
Quote: |
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
Quote: |
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
Quote: |
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
Quote: |
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
Quote: |
Originally posted by lxmxn at 2007-5-7 03:55 PM:
To songk:
直接用for和copy就可以完成了,不需要设置变量延迟和写入文件。 |
|
不太明白能写出来么 谢谢啊 !!!
作者: idolumsky
时间: 2008-3-4 19:56
Quote: |
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做出来?