中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-07 13:46
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 已解决:‘FOR’处理的目录名称如果带空格应如何写法? 查看 849 回复 4
楼 主 已解决:‘FOR’处理的目录名称如果带空格应如何写法? 发表于 2008-02-23 22:07 ·  中国 广东 广州 海珠区 电信
初级用户
★★
积分 170
发帖 72
注册 2007-03-11 22:16
19年会员
UID 81435
性别 男
状态 离线
请教:关于批处理中使用‘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 ]
2 发表于 2008-02-23 22:25 ·  中国 广东 广州 天河区 电信
金牌会员
★★★★
一叶枝头,万树皆春
积分 2,564
发帖 1,127
注册 2006-12-25 22:57
19年会员
UID 74552
性别 男
状态 离线
使用扩展参数usebackq后给路径加双引号就行了
3 发表于 2008-02-23 22:41 ·  中国 广东 广州 海珠区 电信
初级用户
★★
积分 170
发帖 72
注册 2007-03-11 22:16
19年会员
UID 81435
性别 男
状态 离线
谢谢,已经解决了

修改成:
FOR /f "usebackq tokens=1-30 delims=" %%b IN (%SYSTEMDRIVE%\TEMP\DIR.TXT) do cscript.exe %systemroot%\xcacls.vbs "%%b" /i enable
4 发表于 2008-02-24 13:08 ·  中国 天津 电信
银牌会员
★★★
积分 1,436
发帖 739
注册 2007-10-11 17:44
18年会员
UID 99469
性别 男
状态 离线
tokens=1-30

这个有点多吧,小写字母也才26个吧
5 这样也可以的吧…… 发表于 2008-02-24 15:44 ·  中国 广东 揭阳 电信
银牌会员
★★★★
SuperCleaner
积分 2,362
发帖 1,133
注册 2008-02-02 21:36
18年会员
UID 110072
性别 男
状态 离线
for /f "tokens=*" %%a in ('dir /ad /s /b') do (echo %%~sa)

%~sI - 扩充的路径只含有短名
论坛跳转: