中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
« [1] [2] »
作者:
标题: 求for中usebackq的用法讲解 上一主题 | 下一主题
zhclvip
初级用户





积分 138
发帖 50
注册 2007-1-23
状态 离线
『楼 主』:  求for中usebackq的用法讲解

usebackq        - 指定新语法已在下类情况中使用:                    
                          在作为命令执行一个后引号的字符串并且一个单
                          引号字符为文字字符串命令并允许在 filenameset
                          中使用双引号扩起文件名称。
仅看这个说明,让人一头雾水。请高手讲解!

补充一点,请看下面的帖子

[ Last edited by zhclvip on 2007-2-1 at 10:39 AM ]

2007-1-30 00:20
查看资料  发短消息 网志   编辑帖子  回复  引用回复
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 2 楼』:  

for的帮助信息中提示:

  Quote:
  …… 
  对于带有空格的文件名,您需要用双引号将文件名括起来。为了用这种方式来使
用双引号,您还需要使用 usebackq 选项,否则,双引号会被理解成是用作定义某个要分析的字符串的。

例:假如当前目录有一个含有空格的文件名: “ABC 123.TXT”
  使用for命令读出其文件内容。



  如果不使用 usebackq 参数,则假如指令如下:
  (注:此指令直接在命令行键入,为演示方便。如要写在批处理文件中,请在for中使用双百分号)
for /f "tokens=*" %i in ("ABC 123.TXT") do echo %i
  (输出结果:ABC 123.TXT)



但上面结果并非我们意愿结果(即,要显示“ABC 123.TXT”这个文件的每一行内容)。
因为for把括引ABC 123.TXT的引号解释为括引一个字符串之用的引号了,所以for认为 "ABC 123.TXT" 是字符串,而不是文件名。




按照for提供的更方便的参数 usebackq ,如下使用:
for /f "usebackq tokens=*" %i in ("ABC 123.TXT") do echo %i
当使用 usebackq 参数时,for正确解释了括引这个含有空格文件名的引号,也正常读取出了这个含有空格文件名的文件内容了:)





【 标题/正文  检索主题词: USEBACKQ  】

[ Last edited by redtek on 2007-1-29 at 01:04 PM ]

   此帖被 +6 点积分    点击查看详情   
评分人:【 NWQ 分数: +1  时间:2007-1-30 02:49
评分人:【 zhclvip 分数: +2  时间:2007-1-31 04:07
评分人:【 oilio 分数: +2  时间:2007-2-2 01:00
评分人:【 shaqiu 分数: +1  时间:2007-3-31 10:53




    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
2007-1-30 01:59
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
boluor
初级用户




积分 129
发帖 54
注册 2007-1-4
来自 武大信息学部
状态 离线
『第 3 楼』:  

我也正在这里困惑呢??
  ...豁然..

2007-1-30 06:06
查看资料  发送邮件  发短消息 网志  OICQ (382553030)  编辑帖子  回复  引用回复
g4rr
初级用户





积分 68
发帖 32
注册 2007-1-24
来自 广东潮州
状态 离线
『第 4 楼』:  

redtek兄的解释就是详细.让人容易理解.呵呵
谢谢!

2007-1-31 03:38
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zhclvip
初级用户





积分 138
发帖 50
注册 2007-1-23
状态 离线
『第 5 楼』:  

还有一点问题:
FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i
此处使用了usebackq,为何不用tokens=2就能取到=后面的内容?

2007-2-1 23:37
查看资料  发短消息 网志   编辑帖子  回复  引用回复
oilio
高级用户

前进者


积分 641
发帖 303
注册 2007-1-10
状态 离线
『第 6 楼』:  

谢谢了,这个我也一直直犯迷糊了,现在明白了,谢谢redtek



我相信总有一天,总会遇到一个人可以相濡以沫、相吻以湿!
2007-2-2 01:02
查看资料  发短消息 网志   编辑帖子  回复  引用回复
jianyaogao
初级用户




积分 49
发帖 22
注册 2005-8-4
状态 离线
『第 7 楼』:  

ming bai le yi dian

2007-3-17 22:56
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
netchxing
初级用户





积分 58
发帖 31
注册 2007-1-6
来自 重庆
状态 离线
『第 8 楼』:  

明白了,谢谢

2007-3-20 10:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fd2000
初级用户





积分 24
发帖 11
注册 2007-3-30
状态 离线
『第 9 楼』:  



  Quote:
Originally posted by zhclvip at 2007-2-1 10:37 AM:
还有一点问题:
FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i
此处使用了usebackq,为何不用tokens=2就能取到=后面的内容?

这里怎么也会出现 usebackq 呢?请帮忙解释一下,谢谢!

2007-3-30 15:45
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
shaqiu
初级用户





积分 27
发帖 15
注册 2007-3-24
状态 离线
『第 10 楼』:  

真实厉害
还让我明白了%与%%的区别

2007-3-31 10:53
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fd2000
初级用户





积分 24
发帖 11
注册 2007-3-30
状态 离线
『第 11 楼』:  



  Quote:
Originally posted by zhclvip at 2007-2-1 10:37 AM:
还有一点问题:
FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i
此处使用了usebackq,为何不用tokens=2就能取到=后面的内容?

是取的=前面的内容

2007-4-2 07:30
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
13579246810
初级用户





积分 45
发帖 21
注册 2007-3-14
状态 离线
『第 12 楼』:  

为什么 我用了 for /f "usebackq delims==" %i in ('set') do @echo %i
后我得到的却是 set 这三个字母???

2007-4-2 23:55
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ngd
中级用户

拟谷盗


积分 312
发帖 108
注册 2007-1-21
状态 离线
『第 13 楼』:  



  Quote:
Originally posted by 13579246810 at 2007-4-2 23:55:
为什么 我用了 for /f "usebackq delims==" %i in ('set') do @echo %i
后我得到的却是 set 这三个字母???

符号错了,是倒引号`,而不是单引号'
for /f "usebackq delims==" %i in (`set`) do @echo %i




FLOSS
2008-3-11 16:23
查看资料  发短消息 网志   编辑帖子  回复  引用回复
haiou327
高级用户

DOS时空


积分 713
发帖 348
注册 2007-2-10
状态 离线
『第 14 楼』:  


for /f "usebackq delims==" %i in (`set`) do @echo %i

和for /f "delims==" %i in ('set') do @echo %i执行结果一样
[ Last edited by haiou327 on 2008-8-7 at 10:06 PM ]



欢迎进入我的网盘!!!
2008-8-7 22:04
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (52688226)  编辑帖子  回复  引用回复
tireless
银牌会员





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

倒引号 ` 主要用在什么地方?

2008-9-28 10:11
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: