Board logo

标题: [已结]空格目录下的FOR命令显得困惑 [打印本页]

作者: flysp     时间: 2006-7-13 19:26    标题: [已结]空格目录下的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 ]

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

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

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

作者: bagpipe     时间: 2006-7-14 13:10
因为DELIMS=默认的是以空格和<TAB>为默认值的,所以当你一行中出现有空格的时候他只取第一个空格之前的内容,明白???

作者: buddiyar     时间: 2006-7-14 23:57
"FOR本身默认的是TOKEN里边的每一行一第一列"???

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

刻骨铭心啊 小的记下了:

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

作者: flysp     时间: 2006-7-15 15:12
明白,谢谢

作者: IceCrack     时间: 2006-7-22 20:13
for的命令值得我们去深入的了解啊

作者: ke     时间: 2006-10-2 19:20
多谢,明白了

作者: jieok3375     时间: 2006-10-16 00:33
学习了……

作者: pengfei     时间: 2006-10-16 10:20
for /f “ delims=" %i in (c:\ml.txt) do @echo %i

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

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