作者:zhclvip | 时间:2007-01-30 00:20 | 标题:求for中usebackq的用法讲解
usebackq - 指定新语法已在下类情况中使用:
在作为命令执行一个后引号的字符串并且一个单
引号字符为文字字符串命令并允许在 filenameset
中使用双引号扩起文件名称。
仅看这个说明,让人一头雾水。请高手讲解!
补充一点,请看下面的帖子
[ Last edited by zhclvip on 2007-2-1 at 10:39 AM ]
作者:redtek | 时间:2007-01-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-01-30 06:06
我也正在这里困惑呢??
...豁然..
作者:g4rr | 时间:2007-01-31 03:38
redtek兄的解释就是详细.让人容易理解.呵呵
谢谢!
作者:zhclvip | 时间:2007-02-01 23:37
还有一点问题:
FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i
此处使用了usebackq,为何不用tokens=2就能取到=后面的内容?
作者:oilio | 时间:2007-02-02 01:02
谢谢了,这个我也一直直犯迷糊了,现在明白了,谢谢redtek
作者:jianyaogao | 时间:2007-03-17 22:56
ming bai le yi dian
作者:netchxing | 时间:2007-03-20 10:05
明白了,谢谢
作者:fd2000 | 时间:2007-03-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-03-31 10:53
真实厉害
还让我明白了%与%%的区别
作者:fd2000 | 时间:2007-04-02 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-04-02 23:55
为什么 我用了 for /f "usebackq delims==" %i in ('set') do @echo %i
后我得到的却是 set 这三个字母???
作者:ngd | 时间:2008-03-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-08-07 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-09-28 10:11
倒引号 ` 主要用在什么地方?
作者:mysuntjy | 时间:2008-12-03 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楼里针对了带有空格的文件名.