中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-12 04:17
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS批处理 & 脚本技术(批处理室) » 求for中usebackq的用法讲解
可打印版本  4,551 / 16
第1楼 zhclvip 发表于 2007-01-30 00:20
初级用户 发帖 50 积分 138
求for中usebackq的用法讲解
usebackq - 指定新语法已在下类情况中使用:
在作为命令执行一个后引号的字符串并且一个单
引号字符为文字字符串命令并允许在 filenameset
中使用双引号扩起文件名称。
仅看这个说明,让人一头雾水。请高手讲解!

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

[ Last edited by zhclvip on 2007-2-1 at 10:39 AM ]
第2楼 redtek 发表于 2007-01-30 01:59
金牌会员 发帖 1,147 积分 2,902
for的帮助信息中提示:


  …… 
  对于带有空格的文件名,您需要用双引号将文件名括起来。为了用这种方式来使
用双引号,您还需要使用 usebackq 选项,否则,双引号会被理解成是用作定义某个要分析的字符串的。





例:假如当前目录有一个含有空格的文件名: “ABC 123.TXT”
  使用for命令读出其文件内容。



  如果不使用 usebackq 参数,则假如指令如下:
  (注:此指令直接在命令行键入,为演示方便。如要写在批处理文件中,请在for中使用双百分号)




  (输出结果:ABC 123.TXT)



但上面结果并非我们意愿结果(即,要显示“ABC 123.TXT”这个文件的每一行内容)。
因为for把括引ABC 123.TXT的引号解释为括引一个字符串之用的引号了,所以for认为 "ABC 123.TXT" 是字符串,而不是文件名。




按照for提供的更方便的参数 usebackq ,如下使用:




当使用 usebackq 参数时,for正确解释了括引这个含有空格文件名的引号,也正常读取出了这个含有空格文件名的文件内容了:)





【 标题/正文 检索主题词: USEBACKQ 】

[ Last edited by redtek on 2007-1-29 at 01:04 PM ]
第3楼 boluor 发表于 2007-01-30 06:06
初级用户 发帖 54 积分 129 来自 武大信息学部
我也正在这里困惑呢??
...豁然..
第4楼 g4rr 发表于 2007-01-31 03:38
初级用户 发帖 32 积分 68 来自 广东潮州
redtek兄的解释就是详细.让人容易理解.呵呵
谢谢!
第5楼 zhclvip 发表于 2007-02-01 23:37
初级用户 发帖 50 积分 138
还有一点问题:
FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i
此处使用了usebackq,为何不用tokens=2就能取到=后面的内容?
第6楼 oilio 发表于 2007-02-02 01:02
高级用户 发帖 303 积分 641
谢谢了,这个我也一直直犯迷糊了,现在明白了,谢谢redtek
第7楼 jianyaogao 发表于 2007-03-17 22:56
初级用户 发帖 22 积分 49
ming bai le yi dian
第8楼 netchxing 发表于 2007-03-20 10:05
初级用户 发帖 31 积分 58 来自 重庆
明白了,谢谢
第9楼 fd2000 发表于 2007-03-30 15:45
初级用户 发帖 11 积分 24
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 呢?请帮忙解释一下,谢谢!
第10楼 shaqiu 发表于 2007-03-31 10:53
初级用户 发帖 15 积分 27
真实厉害
还让我明白了%与%%的区别
第11楼 fd2000 发表于 2007-04-02 07:30
初级用户 发帖 11 积分 24
Originally posted by zhclvip at 2007-2-1 10:37 AM:
还有一点问题:
FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i
此处使用了usebackq,为何不用tokens=2就能取到=后面的内容?


是取的=前面的内容
第12楼 13579246810 发表于 2007-04-02 23:55
初级用户 发帖 21 积分 45
为什么 我用了 for /f "usebackq delims==" %i in ('set') do @echo %i
后我得到的却是 set 这三个字母???
第13楼 ngd 发表于 2008-03-11 16:23
中级用户 发帖 108 积分 312
Originally posted by 13579246810 at 2007-4-2 23:55:
为什么 我用了 for /f "usebackq delims==" %i in ('set') do @echo %i
后我得到的却是 set 这三个字母???

符号错了,是倒引号`,而不是单引号'
第14楼 haiou327 发表于 2008-08-07 22:04
高级用户 发帖 348 积分 713




[ Last edited by haiou327 on 2008-8-7 at 10:06 PM ]
第15楼 tireless 发表于 2008-09-28 10:11
银牌会员 发帖 1,122 积分 2,025
倒引号 ` 主要用在什么地方?
1 2  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023