中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-07-07 23:32
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 简析环境变量和变量延迟特殊字符以及中介法的微妙关系 查看 8,571 回复 29
16 发表于 2007-10-18 10:45 ·  中国 广东 广州 天河区 电信
初级用户
积分 86
发帖 45
注册 2007-07-26 17:35
18年会员
UID 94082
性别 男
状态 离线
好贴,收藏来学习了,非常多谢LZ
17 发表于 2007-11-09 16:40 ·  中国 湖北 潜江 电信
新手上路
积分 18
发帖 10
注册 2007-10-10 14:06
18年会员
UID 99350
性别 男
状态 离线
学习学习
18 启用变量延迟后,感叹号如何显示? 发表于 2007-12-17 13:03 ·  中国 陕西 汉中 电信
新手上路
积分 19
发帖 5
注册 2007-10-10 15:51
18年会员
UID 99367
性别 男
状态 离线
诚如楼主所言,启用变量延迟后,双感叹号!!间的内容将被替换,若无定义,则echo为空;
试用了 echo "!!!!" 的语句后,显示双引号"";
再试 echo "^!^!!!" 可以显示 "!!";
再试 echo "!^!^!!" 显示为"!";
试 echo "^!!!^!" 显示为"!";
试 echo "!!^!^!" 显示为"!";

由此得到以下规律:
1、脱字符^在字符串首出现时必可显示一个感叹号,后面继续紧跟^!这样的序列组,有多少组就会得到多少个感叹号,直到连续感叹号出现为止;
2、在第一组连续感叹号和最后一个感叹号间的字符串中,只有出现连续^!两组以上的序列,才会得到一个感叹号,有N组就得到N-1个感叹号;即两个脱字符间的感叹号才可被转义。
3、如果把以上echo语句中的双引号取掉,无论任何情况都得不到输出结果。

尽管得到这样的结论,对其内部处理机制仍不是很清楚,请高手答疑。
另外,即使通过这种方法可以显示!,那么怎么取掉外部的双引号呢?请不要简单告诉我输出文件,再用for解析变换,这样得不偿失。我已经尝试用set定义这些echo内容了,然而显示变量为空,不明就里。
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
tireless +5 2009-06-09 06:50
19 发表于 2008-01-04 15:54 ·  中国 广东 汕头 潮阳区 电信
高级用户
★★★
DOS时空
积分 713
发帖 348
注册 2007-02-10 13:59
19年会员
UID 79169
性别 男
状态 离线
20 发表于 2008-01-26 07:05 ·  中国 湖北 武汉 电信
中级用户
★★
积分 452
发帖 202
注册 2006-12-21 13:46
19年会员
UID 74161
性别 女
状态 离线
18楼你在说什么 ??

C:\>echo "!!!"
"!!!"

C:\>echo "^!^!!!"
"^!^!!!"

C:\>echo "^!!!^!"
"^!!!^!"

C:\>echo "!!^!^!"
"!!^!^!"

C:\>echo !!
!!

C:\>echo ""
""

C:\>
21 发表于 2008-01-26 09:49 ·  中国 吉林 吉林市 联通
初级用户
积分 68
发帖 32
注册 2007-12-09 17:16
18年会员
UID 105152
性别 男
状态 离线
楼上的朋友,他讨论的是(启用变量延迟后,感叹号如何显示?)
22 发表于 2008-10-19 17:23 ·  中国 江西 赣州 电信
新手上路
积分 13
发帖 15
注册 2008-10-19 15:37
17年会员
UID 128763
性别 男
状态 离线
佩服
收藏学习
23 发表于 2008-10-22 13:04 ·  中国 江苏 苏州 昆山市 电信
初级用户
★★
积分 133
发帖 75
注册 2008-08-03 01:08
17年会员
UID 122677
性别 男
状态 离线
在基础上有深入的理解,新手由此入境。
收藏了, 学习,继续学习。
24 发表于 2009-06-09 06:04 ·  中国 广西 贵港 电信
新手上路
积分 19
发帖 18
注册 2009-01-19 00:11
17年会员
UID 136996
性别 男
状态 离线
学习了!~
25 发表于 2009-06-09 12:40 ·  中国 四川 成都 电信
初级用户
★★
积分 118
发帖 66
注册 2006-08-18 16:04
19年会员
UID 60797
性别 男
状态 离线
好帖子,学习学习。
26 发表于 2009-10-01 22:05 ·  中国 北京 联通
中级用户
★★
积分 499
发帖 225
注册 2008-12-30 22:09
17年会员
UID 135392
性别 男
状态 离线
强人,很有探索精神,顶起!
27 发表于 2009-12-16 14:56 ·  中国 吉林 吉林市 电信
新手上路
积分 8
发帖 8
注册 2007-10-31 00:00
18年会员
UID 101241
性别 男
状态 离线
不错 学习到了 我的问题从你那里解决了 谢谢
28 发表于 2009-12-17 14:05 ·  中国 河南 南阳 新野县 联通
新手上路
积分 1
发帖 1
注册 2009-02-03 13:01
17年会员
UID 137915
性别 男
状态 离线
setx.rar
29 发表于 2010-06-04 13:52 ·  中国 上海 电信
新手上路
积分 16
发帖 17
注册 2008-04-08 14:54
18年会员
UID 115249
性别 男
状态 离线
感觉那些扩展部分还是蛮高深的,还需要继续深入的研究。
30 发表于 2010-11-11 15:21 ·  中国 广东 东莞 电信
初级用户
★★
积分 118
发帖 52
注册 2008-05-07 09:39
18年会员
UID 117968
性别 男
状态 离线
高深啊,我看都有点没耐心了,呵呵
论坛跳转: