中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-08 18:49
47,811 主题排行 / 349,895 发帖 / 今日 0 篇 / 48,253 会员排行
DOS批处理 & 脚本技术(批处理室) » 批处理日历
可打印版本  4,257 / 23
第1楼 huzixuan 发表于 2007-02-17 00:00
高级用户 发帖 219 积分 537 来自 芜湖
批处理日历
就要过年了,小弟将日历献上.,有更好更方便更简洁的方法请讨论一下.
代码中有不妥之处请大家踊跃批评............
祝:新年快乐,万事如意. 猪年诸事行大运!!


[ Last edited by huzixuan on 2007-2-21 at 10:49 PM ]
第2楼 jmz573515 发表于 2007-02-17 00:12
银牌会员 发帖 464 积分 1,212
加上几几年的就更完美了...
第3楼 huzixuan 发表于 2007-02-17 00:17
高级用户 发帖 219 积分 537 来自 芜湖
因本人尚处于学飞阶段,还无法实现更复杂的功能,因此还需兄们的帮助才可以完成.
第4楼 slore 发表于 2007-02-17 00:42
铂金会员 发帖 2,478 积分 5,212
for %%b in (31,28,31,30,31,30,31,31,30,31,30,31) do (


2月一定是28天?
第5楼 huzixuan 发表于 2007-02-17 00:59
高级用户 发帖 219 积分 537 来自 芜湖
07年的不是吗;) 并且确实想写一个N年通用的,不会呢....

[ Last edited by huzixuan on 2007-2-17 at 01:00 AM ]
第6楼 xycoordinate 发表于 2007-02-17 01:33
中级用户 发帖 228 积分 493 来自 安徽
set j!a!=%%a

set s!y!=%%b

set /a day+=!s%%c!

for /l %%d in (1,1,!day!) do (
set /a b+=1
if !b! equ 8 set b=1)

以上的几行中的“!”代表什么意思???
第7楼 huzixuan 发表于 2007-02-17 04:19
高级用户 发帖 219 积分 537 来自 芜湖
天那,我可怜的小日历还没有得到更多人的鼓励就已经沉入海底了.....
第8楼 gne3 发表于 2007-02-17 05:20
高级用户 发帖 252 积分 526
顶你了
第9楼 huzixuan 发表于 2007-02-17 06:16
高级用户 发帖 219 积分 537 来自 芜湖
谢谢。.呵呵
第10楼 huzixuan 发表于 2007-02-17 23:13
高级用户 发帖 219 积分 537 来自 芜湖
感谢 兄的鼓励,特别感谢 redtek 兄,虽然没有露面,但我知道兄一直都是在帮助我们的
第11楼 juventusryp 发表于 2007-02-19 09:25
初级用户 发帖 40 积分 88
set j!a!=%%a
这句不是很明白,不知道LZ可否解释一下
第12楼 xycoordinate 发表于 2007-02-20 00:01
中级用户 发帖 228 积分 493 来自 安徽
Originally posted by juventusryp at 2007-2-18 08:25 PM:
set j!a!=%%a
这句不是很明白,不知道LZ可否解释一下

在大家的帮助下,终于知道了!!!

setlocal enabledelayedexpansion

set /?

......
考虑到读取一行文本时所遇到的目前扩充的限制时,延迟环境
变量扩充
是很有用的,而不是执行的时候。以下例子说明直接
变量扩充的问题:

set VAR=before
if "%VAR%" == "before" (
set VAR=after
if "%VAR%" == "after" @echo If you see this, it worked
)

不会显示消息,因为在读到第一个 IF 语句时,BOTH IF 语句中
的 %VAR% 会被代替;原因是: 它包含 IF 的文体,IF 是一个
复合语句。所以,复合语句中的 IF 实际上是在比较 "before" 和
"after",这两者永远不会相等。同样,以下这个例子也不会达到
预期效果:

set LIST=
for %i in (*.txt) do set LIST=%LIST% %i
echo %LIST%

原因是,它不会在目前的目录中建立一个文件列表,而只是将
LIST 变量设成找到的最后一个文件。这也是因为 %LIST% 在
FOR 语句被读取时,只被扩充了一次;而且,那时的 LIST 变量
是空的。因此,我们真正执行的 FOR 循环是:

for %i in (*) do set LIST= %i

这个循环继续将 LIST 设成找到的最后一个文件。

延迟环境变量扩充允许您使用一个不同的字符(惊叹号)在执行
时间扩充环境变量。如果延迟的变量扩充被启用,可以将上面
例子写成以下所示,以达到预期效果:

set VAR=before
if "%VAR%" == "before" (
set VAR=after
if "!VAR!" == "after" @echo If you see this, it worked
)

set LIST=
for %i in (*.txt) do set LIST=!LIST! %i
echo %LIST%
......
第13楼 pxcok 发表于 2007-02-20 05:00
新手上路 发帖 6 积分 12
帮你顶一下
第14楼 huzixuan 发表于 2007-02-20 05:13
高级用户 发帖 219 积分 537 来自 芜湖
13楼的兄弟 解释的好清楚.我一直都是这么用,但却说不清楚这到底是什么意思呢!
第15楼 huzixuan 发表于 2007-02-21 07:45
高级用户 发帖 219 积分 537 来自 芜湖
得到斑竹的鼓励 真是一件令人兴奋的事.!
1 2  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023