中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-12 05:09
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求for中usebackq的用法讲解 查看 4,553 回复 16
楼 主 求for中usebackq的用法讲解 发表于 2007-01-30 00:20 ·  中国 江苏 南京 电信
初级用户
★★
积分 138
发帖 50
注册 2007-01-23 10:59
19年会员
UID 77428
性别 男
状态 离线
usebackq - 指定新语法已在下类情况中使用:
在作为命令执行一个后引号的字符串并且一个单
引号字符为文字字符串命令并允许在 filenameset
中使用双引号扩起文件名称。
仅看这个说明,让人一头雾水。请高手讲解!

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

[ Last edited by zhclvip on 2007-2-1 at 10:39 AM ]
2 发表于 2007-01-30 01:59 ·  中国 北京 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
19年会员
UID 63324
性别 男
状态 离线
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 ]
本帖最近评分记录 (共 4 条) 点击查看详情
评分人分数时间
NWQ +1 2007-01-30 02:49
zhclvip +2 2007-01-31 04:07
oilio +2 2007-02-02 01:00
shaqiu +1 2007-03-31 10:53
    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
3 发表于 2007-01-30 06:06 ·  中国 湖北 武汉 教育网
初级用户
★★
积分 129
发帖 54
注册 2007-01-04 01:03
19年会员
UID 75376
性别 男
来自 武大信息学部
状态 离线
我也正在这里困惑呢??
...豁然..
4 发表于 2007-01-31 03:38 ·  中国 广东 广州 黄埔区 电信
初级用户
积分 68
发帖 32
注册 2007-01-24 04:00
19年会员
UID 77490
性别 男
来自 广东潮州
状态 离线
redtek兄的解释就是详细.让人容易理解.呵呵
谢谢!
5 发表于 2007-02-01 23:37 ·  中国 江苏 南京 电信
初级用户
★★
积分 138
发帖 50
注册 2007-01-23 10:59
19年会员
UID 77428
性别 男
状态 离线
还有一点问题:
FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i
此处使用了usebackq,为何不用tokens=2就能取到=后面的内容?
6 发表于 2007-02-02 01:02 ·  中国 江苏 连云港 电信
高级用户
★★★
前进者
积分 641
发帖 303
注册 2007-01-10 02:57
19年会员
UID 76009
性别 男
状态 离线
谢谢了,这个我也一直直犯迷糊了,现在明白了,谢谢redtek
我相信总有一天,总会遇到一个人可以相濡以沫、相吻以湿!
7 发表于 2007-03-17 22:56 ·  中国 上海 黄浦区 电信
初级用户
积分 49
发帖 22
注册 2005-08-04 13:44
21年会员
UID 41332
性别 男
状态 离线
ming bai le yi dian
8 发表于 2007-03-20 10:05 ·  中国 重庆 璧山区 电信
初级用户
积分 58
发帖 31
注册 2007-01-06 11:16
19年会员
UID 75621
性别 男
来自 重庆
状态 离线
明白了,谢谢
9 发表于 2007-03-30 15:45 ·  中国 江苏 无锡 电信
初级用户
积分 24
发帖 11
注册 2007-03-30 13:56
19年会员
UID 83405
性别 男
状态 离线
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 发表于 2007-03-31 10:53 ·  中国 安徽 合肥 电信
初级用户
积分 27
发帖 15
注册 2007-03-24 05:59
19年会员
UID 82744
性别 男
状态 离线
真实厉害
还让我明白了%与%%的区别
11 发表于 2007-04-02 07:30 ·  中国 江苏 无锡 电信
初级用户
积分 24
发帖 11
注册 2007-03-30 13:56
19年会员
UID 83405
性别 男
状态 离线
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 发表于 2007-04-02 23:55 ·  中国 上海 电信
初级用户
积分 45
发帖 21
注册 2007-03-14 23:10
19年会员
UID 81739
性别 男
状态 离线
为什么 我用了 for /f "usebackq delims==" %i in ('set') do @echo %i
后我得到的却是 set 这三个字母???
13 发表于 2008-03-11 16:23 ·  中国 安徽 马鞍山 电信
中级用户
★★
拟谷盗
积分 312
发帖 108
注册 2007-01-21 11:36
19年会员
UID 77238
性别 男
状态 离线
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
FLOSS
14 发表于 2008-08-07 22:04 ·  中国 广东 汕头 电信
高级用户
★★★
DOS时空
积分 713
发帖 348
注册 2007-02-10 13:59
19年会员
UID 79169
性别 男
状态 离线
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 ]
15 发表于 2008-09-28 10:11 ·  中国 江西 赣州 安远县 电信
银牌会员
★★★★
积分 2,025
发帖 1,122
注册 2007-09-05 20:15
18年会员
UID 96653
性别 男
状态 离线
倒引号 ` 主要用在什么地方?
论坛跳转: