楼 主
[已结]空格目录下的FOR命令显得困惑
发表于 2006-07-13 19:26 · 中国 河南 郑州 电信
中级用户
★
积分 207 发帖 41 注册 2004-10-24 00:00 21年会员 UID 32885 性别 男
状态 离线
假如
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 ]
第 2 楼
发表于 2006-07-14 09:36 · 中国 北京 联通
银牌会员
★★★
DOS联盟捡破烂的
积分 1,144 发帖 425 注册 2005-10-20 00:00 20年会员 UID 43784 来自 北京
状态 离线
呵呵,知道WHY吗?
那是因为你的for命令缺少一个DELIMS= 的参数
for /f “ delims=" %i in (c:\ml.txt) do @echo %i
你在试试,哈哈哈...........
第 3 楼
发表于 2006-07-14 12:12 · 中国 河南 郑州 电信
中级用户
★
积分 207 发帖 41 注册 2004-10-24 00:00 21年会员 UID 32885 性别 男
状态 离线
thank bagpipe。可以了
不过还是要问问
delims 不是定位分隔符号的吗?我的前边不成功是不是FOR本身默认的是TOKEN里边的每一行一第一列啊。^_^看来我还是对这些参数有些不懂
"delims="在这里,是不是就是不分界,没有分隔符的意思
要学习中……
万分感谢
[ Last edited by flysp on 2006-7-14 at 12:26 ]
第 4 楼
发表于 2006-07-14 13:10 · 中国 北京 联通
银牌会员
★★★
DOS联盟捡破烂的
积分 1,144 发帖 425 注册 2005-10-20 00:00 20年会员 UID 43784 来自 北京
状态 离线
因为DELIMS=默认的是以空格和<TAB>为默认值的,所以当你一行中出现有空格的时候他只取第一个空格之前的内容,明白???
第 5 楼
发表于 2006-07-14 23:57 · 中国 江苏 苏州 电信
初级用户
★★
积分 160 发帖 75 注册 2006-06-28 01:07 19年会员 UID 57661 性别 男
状态 离线
"FOR本身默认的是TOKEN里边的每一行一第一列"???
汗啊 最近一直在找关于for的用法 竟然不知还有这等要事
算是知道自己是多菜了
刻骨铭心啊 小的记下了:
对于有空格的文本行要使用delims=
第 6 楼
发表于 2006-07-15 15:12 · 中国 河南 郑州 电信
中级用户
★
积分 207 发帖 41 注册 2004-10-24 00:00 21年会员 UID 32885 性别 男
状态 离线
第 7 楼
发表于 2006-07-22 20:13 · 中国 辽宁 大连 教育网
中级用户
★★
DOS之友
积分 332 发帖 168 注册 2005-10-06 00:00 20年会员 UID 43171 性别 男 来自 天涯
状态 离线
第 8 楼
发表于 2006-10-02 19:20 · 中国 湖北 武汉 电信
新手上路
★
积分 4 发帖 2 注册 2006-09-28 11:38 19年会员 UID 63933
状态 离线
第 9 楼
发表于 2006-10-16 00:33 · 中国 广东 东莞 电信
中级用户
★★
积分 282 发帖 130 注册 2006-09-20 22:25 19年会员 UID 63201 来自 广东
状态 离线
第 10 楼
发表于 2006-10-16 10:20 · 中国 湖南 娄底 新化县 电信
银牌会员
★★★
积分 1,218 发帖 485 注册 2006-07-21 21:24 19年会员 UID 58987 来自 湖南.娄底
状态 离线
for /f “ delims=" %i in (c:\ml.txt) do @echo %i
for默认的分格符为空格, 而"delims="是取消了默认分隔符, 以使整行内容得到提取.
使用"tokens=*"也可以达到同样效果, 它是把零列以后所有的内容都赋给一个变量%%?
本帖最近评分记录
(共 1 条)
点击查看详情
评分人 分数 时间
redtek
+1
2006-10-16 10:32
论坛跳转:
— 请选择 —
站务公告 & 版主讨论
意见反馈 & 网友交流
DOS学习入门 & 精彩文章 (教学室)
DOS疑难解答 & 问题讨论 (解答室)
DOS启动盘 & LOGO技术 (启动盘室)
DOS批处理 & 脚本技术(批处理室)
DOS媒体世界 & 网络技术 (多媒体室)
DOS汉化世界 & 中文系统 (中文化室)
DOS开发编程 & 发展交流 (开发室)
DOS软件下载 & 游戏分享 (下载室)
GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区
其它操作系统综合讨论区
WinPE、PowerShell及其它命令行系统专区
贴图灌水、文学娱乐专区
网络日志(Blog)
论坛回收站
├ 链接失效,待修正