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楼里针对了带有空格的文件名.