中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 已解决:‘FOR’处理的目录名称如果带空格应如何写法?
作者:
标题: 已解决:‘FOR’处理的目录名称如果带空格应如何写法? 上一主题 | 下一主题
leton
初级用户





积分 170
发帖 72
注册 2007-3-11
状态 离线
『楼 主』:  已解决:‘FOR’处理的目录名称如果带空格应如何写法?

请教:关于批处理中使用‘FOR’处理的目录名称如果带空格应如何写法?

下面这段在应用时,没法通过,For 读入处理的内容,只有空格前,如:

%SYSTEMDRIVE%\TEMP\DIR.TXT 文件内容

D:\Program Files\WindowsUpdate
D:\Program Files\WebTrends Analysis Series

但执行后,结果出错,因为只能读入'D:\Program',后面内容全没有了...


@%SYSTEMDRIVE%
@CD\
@CD %SYSTEMDRIVE%\PROGRAM FILES
@DIR /AD /B /S >> %SYSTEMDRIVE%\TEMP\DIR.TXT
@FOR /f %%b IN (%SYSTEMDRIVE%\TEMP\DIR.TXT) do cscript.exe %systemroot%\xcacls.vbs "%%b" /i enable
@Del %SYSTEMDRIVE%\TEMP\DIR.TXT

[ Last edited by leton on 2008-2-23 at 10:41 PM ]

2008-2-23 22:07
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 2 楼』:  

使用扩展参数usebackq后给路径加双引号就行了

2008-2-23 22:25
查看资料  发短消息 网志   编辑帖子  回复  引用回复
leton
初级用户





积分 170
发帖 72
注册 2007-3-11
状态 离线
『第 3 楼』:  

谢谢,已经解决了

修改成:
FOR /f "usebackq tokens=1-30 delims=" %%b IN (%SYSTEMDRIVE%\TEMP\DIR.TXT) do cscript.exe %systemroot%\xcacls.vbs "%%b" /i enable

2008-2-23 22:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 4 楼』:  

tokens=1-30

这个有点多吧,小写字母也才26个吧

2008-2-24 13:08
查看资料  发短消息 网志  OICQ (470237592)  编辑帖子  回复  引用回复
523066680
银牌会员

SuperCleaner


积分 2362
发帖 1133
注册 2008-2-2
状态 离线
『第 5 楼』:  这样也可以的吧……

for /f "tokens=*" %%a in ('dir /ad /s /b') do (echo %%~sa)

     %~sI        - 扩充的路径只含有短名

2008-2-24 15:44
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (523066680)  编辑帖子  回复  引用回复

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


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



论坛跳转: