中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]FOR IN里的文件名有空格,需要如何处理一下?
作者:
标题: [求助]FOR IN里的文件名有空格,需要如何处理一下? 上一主题 | 下一主题
xilianghe
新手上路





积分 11
发帖 11
注册 2010-1-18
状态 离线
『楼 主』:  [求助]FOR IN里的文件名有空格,需要如何处理一下?

比如:
for /f "delims=," %%a in (marry doc.txt)...
但因为文件名中含有空格,总是读成文件名是“marry”,如果加上引号,则语句的用意也改变了
该如何处理呢?

谢谢!

2011-1-14 15:05
查看资料  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 2 楼』:  

for /f "usebackq delims=," %%a in ("marry doc.txt")...



批处理之家 http://bbs.bathome.net/forum-5-1.html
2011-1-14 15:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
xilianghe
新手上路





积分 11
发帖 11
注册 2010-1-18
状态 离线
『第 3 楼』:  



  Quote:
Originally posted by Hanyeguxing at 2011-1-14 15:21:
for /f "usebackq delims=," %%a in ("marry doc.txt")...

这个是不行的,这个语法的意思成为,仅对“marry doc.txt” 字串进行分列处理

2011-1-14 15:23
查看资料  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 4 楼』:  

你没看到关键字里有 usebackq 啊?



批处理之家 http://bbs.bathome.net/forum-5-1.html
2011-1-14 15:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
xilianghe
新手上路





积分 11
发帖 11
注册 2010-1-18
状态 离线
『第 5 楼』:  



  Quote:
Originally posted by Hanyeguxing at 2011-1-14 15:48:
你没看到关键字里有 usebackq 啊?

你有运行通过的例子吗?
usebackq的作用,据我的理解是引起一个命令行,此处应该不是问题的关键;
另,我实际的代码里是实验过的,只是刚才简单描述时忘了说明了。

2011-1-14 16:00
查看资料  发短消息 网志   编辑帖子  回复  引用回复
xilianghe
新手上路





积分 11
发帖 11
注册 2010-1-18
状态 离线
『第 6 楼』:  



  Quote:
Originally posted by xilianghe at 2011-1-14 15:05:
比如:
for /f "delims=," %%a in (marry doc.txt)...
但因为文件名中含有空格,总是读成文件名是“marry”,如果加上引号,则语句的用意也改变了
该如何处理呢?

谢谢!

又是自己来解答,但只是一个迂回的方法
SET NAME=marry doc.txt
SET NAMEWITHQUOT="!NAME!"
for /f "delims=," %%a in (!NAMEWITHQUOT!)...

试验通过

2011-1-14 16:07
查看资料  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 7 楼』:  

usebackq
指定可以使用引号引用 filenameset 中的文件名称


for /F ["ParsingKeywords"] {%% | %}variable in (filenameset) do command [CommandLineOptions]

for /F ["ParsingKeywords"] {%% | %}variable in ("LiteralString") do command [CommandLineOptions]

for /F ["ParsingKeywords"] {%% | %}variable in ('command') do command [CommandLineOptions]

filenameset 参数指定一个或多个文件名称。在继续到 filenameset 中的下一个文件之前,每个文件都会被打开、读取和处理。要覆盖默认解析行为,指定 "ParsingKeywords"。这是一个引用字符串,它包含一个或多个关键字以指定不同的解析选项。

如果使用 usebackq 选项,请使用如下语法之一:

for /F ["usebackqParsingKeywords"] {%% | %}variable in ("filenameset") do command [CommandLineOptions]

for /F ["usebackqParsingKeywords"] {%% | %}variable in ('LiteralString') do command [CommandLineOptions]

for /F ["usebackqParsingKeywords"] {%% | %}variable in (`command`) do command [CommandLineOptions]

[ Last edited by Hanyeguxing on 2011-1-14 at 16:32 ]



批处理之家 http://bbs.bathome.net/forum-5-1.html
2011-1-14 16:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
eminjin
新手上路





积分 10
发帖 10
注册 2010-11-18
状态 离线
『第 8 楼』:  



  Quote:
Originally posted by xilianghe at 2011-1-14 16:00:


你有运行通过的例子吗?
usebackq的作用,据我的理解是引起一个命令行,此处应该不是问题的关键;
另,我实际的代码里是实验过的,只是刚才简单描述时忘了说明了。

usebackq,实验通过

2011-1-14 17:37
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: