中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 批处理中的计算问题 上一主题 | 下一主题
willhot2
新手上路





积分 8
发帖 2
注册 2006-3-6
状态 离线
『楼 主』:  批处理中的计算问题

大家好,因为自身水平很低,想问一个可能很简单的问题。

怎么样能在批处理中实现计算的功能? 我知道用%date%可以获得当前系统的日期,如果我想得到昨天的日期,该怎么写? 如果我想用今天的日期减1,有没有类似SUM的函数??

谢谢大家。

2006-3-6 20:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
3742668
荣誉版主





积分 2013
发帖 718
注册 2006-2-18
状态 离线
『第 2 楼』:  

@echo off
echo 今天的日期是 %date:~0,10%
set /a num = %date:~8,2%
set /a num = %num% - 1
if %num% LSS 10 set num=0%num%
echo 昨天的日期是 %date:~0,8%%num%
pause>nul

至于特殊情况(今天01号的话)的问题就自己去解决了.

2006-3-7 00:01
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willhot2
新手上路





积分 8
发帖 2
注册 2006-3-6
状态 离线
『第 3 楼』:  

谢谢3742668帮忙

但是我试了一下,好像不行。可不可以解释一下每行参数的意思。

2006-3-8 15:49
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 4 楼』:  

Re willhot2:

      出现问题的原因,应该是你所处的系统日期格式与 3742668 兄的有所差异,包括星期的出现位置,星期所使用的语言,以及日期是否有零前缀。这些细微的差别导致了2楼程序以及许多与日期有关的批处理存在相当多的兼容性问题。

      你可以将 echo %date% 的结果贴上来,可以根据你的具体情况对程序进行细微的调整。更通用且完善的算法也存在,不过实现起来会更加复杂,或者使用第三方工具 GNU date 也是一个不错的选择,在本区就有链接。

      另外,解答室已经由不少对日期进行分析和计算的主题,可以深入的搜索一下。



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2006-3-8 19:57
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
3742668
荣誉版主





积分 2013
发帖 718
注册 2006-2-18
状态 离线
『第 5 楼』:  

也许是系统环境不一样吧
那个东东我测试可以用才贴上来的
不过我平时喜欢改我自己的系统
一些环境设置我自己都有点记不大清楚了,呵呵
建议你打开windows帮助看看set命令的用法。

2006-3-8 22:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: