Board logo

标题: 求for中usebackq的用法讲解 [打印本页]

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

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

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

作者: redtek     时间: 2007-1-30 01:59
for的帮助信息中提示:


  …… 
  对于带有空格的文件名,您需要用双引号将文件名括起来。为了用这种方式来使
用双引号,您还需要使用 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 ]

作者: boluor     时间: 2007-1-30 06:06
我也正在这里困惑呢??
...豁然..

作者: g4rr     时间: 2007-1-31 03:38
redtek兄的解释就是详细.让人容易理解.呵呵
谢谢!

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

作者: oilio     时间: 2007-2-2 01:02
谢谢了,这个我也一直直犯迷糊了,现在明白了,谢谢redtek

作者: jianyaogao     时间: 2007-3-17 22:56
ming bai le yi dian

作者: netchxing     时间: 2007-3-20 10:05
明白了,谢谢

作者: fd2000     时间: 2007-3-30 15:45
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 呢?请帮忙解释一下,谢谢!

作者: shaqiu     时间: 2007-3-31 10:53
真实厉害
还让我明白了%与%%的区别

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


是取的=前面的内容

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

作者: ngd     时间: 2008-3-11 16:23
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

作者: haiou327     时间: 2008-8-7 22:04
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 ]

作者: tireless     时间: 2008-9-28 10:11
倒引号 ` 主要用在什么地方?

作者: mysuntjy     时间: 2008-12-3 06:48
谢谢!明白了。

作者: applecy     时间: 2010-10-17 21:29
Originally posted by ngd at 2008-3-11 04:23 PM:

符号错了,是倒引号`,而不是单引号'

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



2楼里针对了带有空格的文件名.