中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-09-13 12:10
47,812 主题排行 / 349,916 发帖 / 今日 0 篇 / 48,268 会员排行
DOS批处理 & 脚本技术(批处理室) » 简析环境变量和变量延迟特殊字符以及中介法的微妙关系
可打印版本  9,371 / 29
第16楼 greenworld 发表于 2007-10-18 10:45
初级用户 发帖 45 积分 86
好贴,收藏来学习了,非常多谢LZ
第17楼 techon 发表于 2007-11-09 16:40
新手上路 发帖 10 积分 18
学习学习
第18楼 hizebra 发表于 2007-12-17 13:03
新手上路 发帖 5 积分 19
启用变量延迟后,感叹号如何显示?
诚如楼主所言,启用变量延迟后,双感叹号!!间的内容将被替换,若无定义,则echo为空;
试用了 echo "!!!!" 的语句后,显示双引号"";
再试 echo "^!^!!!" 可以显示 "!!";
再试 echo "!^!^!!" 显示为"!";
试 echo "^!!!^!" 显示为"!";
试 echo "!!^!^!" 显示为"!";

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

尽管得到这样的结论,对其内部处理机制仍不是很清楚,请高手答疑。
另外,即使通过这种方法可以显示!,那么怎么取掉外部的双引号呢?请不要简单告诉我输出文件,再用for解析变换,这样得不偿失。我已经尝试用set定义这些echo内容了,然而显示变量为空,不明就里。
第19楼 haiou327 发表于 2008-01-04 15:54
高级用户 发帖 348 积分 713
好帖顶起来
第20楼 429499381 发表于 2008-01-26 07:05
中级用户 发帖 202 积分 452
18楼你在说什么 ??

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

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

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

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

C:\>echo !!
!!

C:\>echo ""
""

C:\>
第21楼 qianmo717 发表于 2008-01-26 09:49
初级用户 发帖 32 积分 68
楼上的朋友,他讨论的是(启用变量延迟后,感叹号如何显示?)
第22楼 laihaibin08 发表于 2008-10-19 17:23
新手上路 发帖 15 积分 13
佩服
收藏学习
第23楼 slw218856 发表于 2008-10-22 13:04
初级用户 发帖 75 积分 133
在基础上有深入的理解,新手由此入境。
收藏了, 学习,继续学习。
第24楼 cjiabing 发表于 2009-06-09 06:04
新手上路 发帖 18 积分 19
学习了!~
第25楼 weasel 发表于 2009-06-09 12:40
初级用户 发帖 66 积分 118
好帖子,学习学习。
第26楼 sl543001 发表于 2009-10-01 22:05
中级用户 发帖 225 积分 499
强人,很有探索精神,顶起!
第27楼 jiafei2427 发表于 2009-12-16 14:56
新手上路 发帖 8 积分 8
不错 学习到了 我的问题从你那里解决了 谢谢
第28楼 hqz123 发表于 2009-12-17 14:05
新手上路 发帖 1 积分 1
setx.rar
第29楼 7testing 发表于 2010-06-04 13:52
新手上路 发帖 17 积分 16
感觉那些扩展部分还是蛮高深的,还需要继续深入的研究。
第30楼 wxs81514 发表于 2010-11-11 15:21
初级用户 发帖 52 积分 118
高深啊,我看都有点没耐心了,呵呵
上一页  1 2
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023