中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]空格目录下的FOR命令显得困惑
作者:
标题: [已结]空格目录下的FOR命令显得困惑 上一主题 | 下一主题
flysp
中级用户




积分 207
发帖 41
注册 2004-10-24
状态 离线
『楼 主』:  [已结]空格目录下的FOR命令显得困惑

假如
C:\Program Files\Internet Explorer\
存在1.txt 2.txt
执行
cd \
c:
dir  /s /b 1.txt >ml.txt
dir  /s /b 2.txt >>ml.txt
for /f %%i  in (ml.txt) do @echo %%i | del %%i

最后的结果不成功
在命令行下用
for /f %i  in (c:\ml.txt) do @echo %i
显示:C:\Program
居然不显示全部的路径。不知所以了,Program Files,只显示空格前的,不显示全部路径。这样想删除文件也不成了。怎么才能避免这个空格呢?
试了这两个
for /f %i  in (c:\ml.txt) do @echo " %i"
for /f %i  in (c:\ml.txt) do @echo %~fi


都不成啊
:(不知所以。

[ Last edited by willsort on 2006-7-23 at 13:14 ]

2006-7-13 19:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bagpipe
银牌会员

DOS联盟捡破烂的


积分 1144
发帖 425
注册 2005-10-20
来自 北京
状态 离线
『第 2 楼』:  

呵呵,知道WHY吗?
那是因为你的for命令缺少一个DELIMS=  的参数
for /f “ delims="  %i  in (c:\ml.txt) do @echo %i
你在试试,哈哈哈...........

2006-7-14 09:36
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
flysp
中级用户




积分 207
发帖 41
注册 2004-10-24
状态 离线
『第 3 楼』:  

thank bagpipe。可以了
不过还是要问问
delims 不是定位分隔符号的吗?我的前边不成功是不是FOR本身默认的是TOKEN里边的每一行一第一列啊。^_^看来我还是对这些参数有些不懂
"delims="在这里,是不是就是不分界,没有分隔符的意思
要学习中……
万分感谢

[ Last edited by flysp on 2006-7-14 at 12:26 ]

2006-7-14 12:12
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bagpipe
银牌会员

DOS联盟捡破烂的


积分 1144
发帖 425
注册 2005-10-20
来自 北京
状态 离线
『第 4 楼』:  

因为DELIMS=默认的是以空格和<TAB>为默认值的,所以当你一行中出现有空格的时候他只取第一个空格之前的内容,明白???

2006-7-14 13:10
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
buddiyar
初级用户





积分 160
发帖 75
注册 2006-6-28
状态 离线
『第 5 楼』:  

"FOR本身默认的是TOKEN里边的每一行一第一列"???

汗啊 最近一直在找关于for的用法 竟然不知还有这等要事
算是知道自己是多菜了

刻骨铭心啊  小的记下了:

对于有空格的文本行要使用delims=

2006-7-14 23:57
查看资料  发送邮件  发短消息 网志  OICQ (243589543)  编辑帖子  回复  引用回复
flysp
中级用户




积分 207
发帖 41
注册 2004-10-24
状态 离线
『第 6 楼』:  

明白,谢谢

2006-7-15 15:12
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
IceCrack
中级用户

DOS之友


积分 332
发帖 168
注册 2005-10-6
来自 天涯
状态 离线
『第 7 楼』:  

for的命令值得我们去深入的了解啊

2006-7-22 20:13
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (369525996)  编辑帖子  回复  引用回复
ke
新手上路





积分 4
发帖 2
注册 2006-9-28
状态 离线
『第 8 楼』:  

多谢,明白了

2006-10-2 19:20
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
jieok3375
中级用户





积分 282
发帖 130
注册 2006-9-20
来自 广东
状态 离线
『第 9 楼』:  

学习了……



~~~~好好学习
              天天向上~~~~
2006-10-16 00:33
查看资料  发送邮件  发短消息 网志  OICQ (147385156)  编辑帖子  回复  引用回复
pengfei
银牌会员




积分 1218
发帖 485
注册 2006-7-21
来自 湖南.娄底
状态 离线
『第 10 楼』:  

for /f “ delims="  %i  in (c:\ml.txt) do @echo %i

for默认的分格符为空格, 而"delims="是取消了默认分隔符, 以使整行内容得到提取.

使用"tokens=*"也可以达到同样效果, 它是把零列以后所有的内容都赋给一个变量%%?

   此帖被 +1 点积分     点击查看详情   
评分人:【 redtek 分数: +1  时间:2006-10-16 10:32


2006-10-16 10:20
查看资料  发送邮件  发短消息 网志  OICQ (573381312)  编辑帖子  回复  引用回复

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


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



论坛跳转: