中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-12 14:23
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS批处理 & 脚本技术(批处理室) » [讨论]FOR语句读取文件所在路径带有空格问题
可打印版本  1,247 / 3
第1楼 tom 发表于 2009-10-18 13:45
新手上路 发帖 2 积分 2
[讨论]FOR语句读取文件所在路径带有空格问题
我想做的这个批处理,是想要读取某个通过提示输入的路径,并查找该文件夹下的 test.txt 文件,如果存在该文件就读取每一行的内容(除了含有“I will delete this line”字符的那一行),并将读取到的内容写入temp.txt,最后通过 move 的方式覆盖原文件。本来没有空格的路径工作很正常,但是只要带有空格,就出问题:

1. 不加双引号的话就就无法指定带空格的路径
2. 如果变量加双引号,For 语句读取的路径居然会多一个半边引号,这一点我是感到莫名其妙。比如说一个路径为 D:\Hello World 的文件夹,如果加双引号的话,系统就会返回错误提示:系统找不到文件 D:\Hello World"\test.txt ——多了半边引号。

小弟刚接触批处理,还请高手指导一下,代码如下:



这个批处理还有个缺点就是会删除空行,还不知道怎么弄,批处理的知识我还要再多家了解才行。

[ Last edited by tom on 2009-10-18 at 13:52 ]
第2楼 newxso 发表于 2009-10-18 16:14
初级用户 发帖 101 积分 73 来自 GZ
"%p%"\test.txt ----> "%p%\test.txt"
第3楼 mwm5 发表于 2009-10-18 16:50
初级用户 发帖 23 积分 40
顶楼上的~~呵呵
第4楼 tom 发表于 2009-10-18 19:44
新手上路 发帖 2 积分 2
这我可真的纳闷了!

谢谢两位兄弟指正。用引号括主整个文件的地址这个方法我也试过了,这也是我陷入了这个怪题的一部分原因。

下午出去逛了一圈,回来看到解答一开始觉得不可能啊,我用这个方法怎么就不行。于时我试了一下这个简单版的 test.bat,没错,怎么这个批处理就没问题?

如果是这样,那就是跟我所要修改的文件有关系了。我要修改的是系统隐藏文件 desktop.ini,其实我取消了该文件的系统属性和隐藏属性结果也一样,For语句在读取这个文件时,好像是直接略过了一样,它根本就没有读取desktop.ini这个文件的每一行!

For怎么会这样?加个双引号,它就不读了(而且必须是系统隐藏文件),不加双引号它就能读,这么怪?不信你们试试看(随便临时建立一个desktop.ini文件)。

[ Last edited by tom on 2009-10-18 at 19:47 ]
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023