中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]"^"符号在此语句的意义
作者:
标题: [已结]"^"符号在此语句的意义 上一主题 | 下一主题
007dna1
新手上路





积分 19
发帖 15
注册 2008-3-31
状态 离线
『楼 主』:  [已结]"^"符号在此语句的意义


for /f "tokens=15" %i in ('ipconfig ^| find /i "ip address"') do set ip=%i
echo %ip%
请问
以上for命令中 在 “|”前面为啥要加上“^”。。。这样不是应该取消了符号“|”的作用,而把“|”作为一个普通字符了吗???




转移自 DOS疑难解答 & 问题讨论 (解答室)
此问题更适合发到批处理版块
——管理员


[ Last edited by HAT on 2008-12-1 at 16:19 ]

2008-11-28 17:25
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
moniuming
银牌会员

永远的菜鸟



积分 1335
发帖 574
注册 2007-11-27
来自 广西
状态 离线
『第 2 楼』:  

http://www.cn-dos.net/forum/view ... ghlight=&page=3

2008-11-28 17:37
查看资料  发短消息 网志   编辑帖子  回复  引用回复
007dna1
新手上路





积分 19
发帖 15
注册 2008-3-31
状态 离线
『第 3 楼』:  

ipconfig ^| find /i "ip address"本来想做的是获取本机ip地址。。。如果加了^符号,“|”符号不是就被转义了,成为一个普通字符了???为啥这样还可以执行成功呢????

2008-11-28 17:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 4 楼』:  

如果不加 ^,| 就把那句给分成了绿两部分:

  Quote:
for /f "tokens=15" %i in ('ipconfig | find /i "ip address"') do set ip=%i

这个 ^ 是给 for

[ Last edited by tireless on 2008-11-28 at 18:45 ]

2008-11-28 18:26
查看资料  发短消息 网志   编辑帖子  回复  引用回复
007dna1
新手上路





积分 19
发帖 15
注册 2008-3-31
状态 离线
『第 5 楼』:  

谢谢。。。真的没有想到大家这么热心。。。问题这么快有了答案。。。再想问问???是不是可以理解为^符号的另一个用法???

[ Last edited by 007dna1 on 2008-11-28 at 19:57 ]

2008-11-28 19:56
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
007dna1
新手上路





积分 19
发帖 15
注册 2008-3-31
状态 离线
『第 6 楼』:  

那符号 “|” 转义以后。。。系统是怎么还可以识别它为一个符号。。。而不是转义成字符了呢???
这个我还是没有明白。。。是不是在for语句中。。。^就不是转义字符用法了???

[ Last edited by 007dna1 on 2008-11-30 at 02:26 ]

2008-11-30 02:24
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
007dna1
新手上路





积分 19
发帖 15
注册 2008-3-31
状态 离线
『第 7 楼』:  



  Quote:
Originally posted by 007dna1 at 2008-11-28 05:25 PM:
for /f "tokens=15" %i in ('ipconfig ^| find /i "ip address"') do set ip=%i
echo %ip%



请问
以上for命令中 在 “|”前面为啥要加上“^”。。。这样不 ...

还是想问问。。。符号“^”在for语句中没有转义的作用???

2008-12-1 08:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 8 楼』:  

个人观点:反正我觉得这个 ^ 是针对 for 的,我认为在 in 里面的字串被两个 ' 包围起来了,所以里面的字串始终会作为命令来执行...

2008-12-1 09:02
查看资料  发短消息 网志   编辑帖子  回复  引用回复
pusofalse
银牌会员




积分 1604
发帖 646
注册 2008-4-13
状态 离线
『第 9 楼』:  

第一条命令|第二条命令。
管道符|的作用是连接两条命令,把第一条命令的标准输出作为第二条命令的标准输入。
tasklist|findstr /i "svchost.exe"
以上,在tasklist的输出结果中查找字符串"svchost.exe"。

  Quote:
for /f "tokens=15" %i in ('ipconfig | find /i "ip address"') do set ip=%i

如果不加转义符^,会被系统误认为第一条命令是所有的蓝色部分,第二条命令是所有的绿色部分。
而蓝色部分本身不是一条完整的命令。所以必须加^对|进行转义。它连接的只是集合中的ipconfig和findtr /i "ip address"
- - ||||||||

   此帖被 +2 点积分    点击查看详情   
评分人:【 HAT 分数: +2  时间:2008-12-1 16:20




心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
2008-12-1 11:49
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 10 楼』:  

一年半之前有个类似的帖子:http://www.cn-dos.net/forum/viewthread.php?tid=29426



2008-12-1 11:53
查看资料  发短消息 网志   编辑帖子  回复  引用回复
007dna1
新手上路





积分 19
发帖 15
注册 2008-3-31
状态 离线
『第 11 楼』:  

谢谢各位。。。特别谢谢hat版主。。。学习了。。。下次一定先搜索再问。。。

2008-12-1 16:06
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: