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