中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-24 05:17
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 批处小玩意! 玩出你的水平! 查看 2,886 回复 18
16 奇怪的参数传递! 发表于 2007-01-18 11:24 ·  中国 广东 广州 教育网
铂金会员
★★★★
C++启程者
积分 5,154
发帖 1,827
注册 2003-07-18 00:00
22年会员
UID 7105
性别 男
状态 离线
一:
用 &&, 结果for /r 后面的doPath全部为d:\
for %%a in (c d e) do set doPath=%%a:\&&for /r "%doPath%" %%b in (*.exe) do if exist %%b ECHO %%b %%~nb

二:
用分行 配合 ()号,结果for /r 后面的doPath全部为e:\
for %%a in (c d e) do (
set doPath=%%a:\
for /r "%doPath%" %%b in (*.exe) do (if exist %%b ECHO %%b)
)

三:
只有用 %1 式的参数方式传递参数才正常
for %%a in (c d e) do call :tag %%a:\
:tag
if #==#%1 goto :eof
for /r "%1" %%b in (*.exe) do if exist %%b ECHO %%b %%~nb

[ Last edited by GOTOmsdos on 2007-1-18 at 11:52 AM ]
17 发表于 2007-01-18 11:55 ·  中国 广东 广州 教育网
铂金会员
★★★★
C++启程者
积分 5,154
发帖 1,827
注册 2003-07-18 00:00
22年会员
UID 7105
性别 男
状态 离线
Originally posted by hxuan999 at 2007-1-16 11:37 AM:
第二个是,for /r 后面的路径参数是一定要是路径,也就是说C:要写成 ...


仅仅根目录才需要 \ 号,子目录不需要的
18 发表于 2007-01-18 23:45 ·  中国 北京 房山区 联通
初级用户
积分 65
发帖 32
注册 2007-01-17 09:56
19年会员
UID 76791
性别 男
状态 离线
我也来一句吧
I服了YOU!
19 发表于 2007-01-19 00:42
中级用户
★★
DOS之日
积分 337
发帖 161
注册 2006-11-04 05:27
19年会员
UID 69523
性别 男
状态 离线
Originally posted by GOTOmsdos at 2007-1-17 23:55:


仅仅根目录才需要 \ 号,子目录不需要的


谢谢回复,我说的就是那个意思,呵.子目录就是路径的形式,但是C:只是个驱动器,并没有指定路径,所以写成C:\才是从根目录开始.
for /f %%h in (`echo hxuan`) do for /f %%x in (`echo hxuan`) do if %%h==%%x nul
论坛跳转: