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的帮助信息中提示:

  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 ]
作者: 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


  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 呢?请帮忙解释一下,谢谢!
作者: shaqiu     时间: 2007-3-31 10:53
真实厉害
还让我明白了%与%%的区别
作者: fd2000     时间: 2007-4-2 07:30


  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就能取到=后面的内容?

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


  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

作者: 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


  Quote:
Originally posted by ngd at 2008-3-11 04:23 PM:

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

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