中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-05 09:12
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]请教For循环中,如何支持带空格路径 查看 1,283 回复 11
楼 主 [求助]请教For循环中,如何支持带空格路径 发表于 2007-07-07 22:51 ·  中国 广西 防城港 电信
初级用户
积分 72
发帖 26
注册 2007-05-17 18:42
19年会员
UID 88849
性别 男
状态 离线
例如:

For %%i in (%BmpList%) do If %%~zi EQU 0 Del "%BmpList%"

上面这句,如果%BmpList%带有空格就出问题,又不能在in中采用"%BmpList%" 这样的办法支持空格,请大大们只招,谢了
2 发表于 2007-07-08 09:39 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
怎么不能加上引号?
3 发表于 2007-07-08 15:50 ·  中国 广西 防城港 电信
初级用户
积分 72
发帖 26
注册 2007-05-17 18:42
19年会员
UID 88849
性别 男
状态 离线
Originally posted by lxmxn at 2007-7-8 09:39 AM:
怎么不能加上引号?

比如 set BmpList=%temp%\bmp.txt
如果是用"%BmpList%"的话,我这里运行后for并不在bmp.txt里寻找,而是在%temp%\bmp.txt得出的字符串里寻找。
4 发表于 2007-07-09 01:03 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
你測試過沒有?

C:\>type "C:\Documents and Settings\Administrator\桌面\d.bat"
@echo off
set ok=c:\Documents and Settings\Administrator\_viminfo
for %%a in ("%ok%") do @echo\%%~nxa&echo %%~dpa&echo %%~za
pause
C:\>"C:\Documents and Settings\Administrator\桌面\d.bat"
_viminfo
c:\Documents and Settings\Administrator\
9042
请按任意键继续. . .
5 发表于 2007-07-09 15:52 ·  中国 广西 百色 电信
初级用户
积分 72
发帖 26
注册 2007-05-17 18:42
19年会员
UID 88849
性别 男
状态 离线
我测试了,在我的电脑上运行你上面的for得出的结果是:
_viminfo
c:\Documents and Settings\Administrator\
ECHO 处于关闭状态。
请按任意键继续. . .

不知道是什么问题了,难道我电脑的cmd有问题?
6 发表于 2007-07-09 17:02 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
你的_viminfo莫非是个文件夹?
7 发表于 2007-07-09 17:03 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
或者你根本没有_viminfo文件?
8 发表于 2007-07-09 17:38 ·  中国 广西 百色 电信
初级用户
积分 72
发帖 26
注册 2007-05-17 18:42
19年会员
UID 88849
性别 男
状态 离线
我明白了,原来for如果加了/f就会把"c:\Documents and Settings\Administrator\_viminfo"看成字符串了,晕。
9 发表于 2007-07-09 17:53 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
那你为什么给的代码没有/f参数呢?
10 发表于 2007-07-10 01:17 ·  中国 广西 防城港 电信
初级用户
积分 72
发帖 26
注册 2007-05-17 18:42
19年会员
UID 88849
性别 男
状态 离线
Originally posted by lxmxn at 2007-7-9 05:53 PM:
那你为什么给的代码没有/f参数呢?

是我偷懒了,对不起,请问下如果在加/f的情况下有办法使用带空格的路径文件吗?
11 发表于 2007-07-10 11:15 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
那要看你想得到什么?
如果是分析文件的内容,可以这样:

for /f "usebackq delims=" %a in ("C:\Documents and Settings\Administrator\_vimrc") do @echo\%a


如果想得到文件的属性,可以这样:

for /f "delims=" %a in ("C:\Documents and Settings\Administrator\_vimrc") do @echo\%~nxa&echo\%~za
12 发表于 2007-07-10 18:03 ·  中国 广西 百色 电信
初级用户
积分 72
发帖 26
注册 2007-05-17 18:42
19年会员
UID 88849
性别 男
状态 离线
问题解决,再次感谢版主的耐心指导
论坛跳转: