![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-02 09:08 |
共 48,037 主题排行 / 350,122 发帖 / 今日 0 篇 / 48,250 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » for /r的嵌套问题? |
| 可打印版本 1,309 / 6 |
| 第1楼 tao0610 | 发表于 2006-11-03 13:33 |
| 高级用户 发帖 218 积分 579 | |
|
for /r的嵌套问题? 我想查找c,d,e,f盘下的存在不存在1.txt,2.txt,3.txt,4.txt,如果存在则显示路径
@echo off set var=1.txt 2.txt 3.txt 4.txt for %%i in (c d e f) do ( for /r %%i: %%a in (%var%) do ( if exist %%a echo %%a ) ) pause >nul 到FOR /R 时说此时不应有%i,为什么这里不能调用%%i? 用CALL时就可以实现,FOR的嵌套具体是什么执行顺序? |
|
| 第2楼 NaturalJ0 | 发表于 2006-11-03 19:55 |
| 银牌会员 发帖 533 积分 1,181 | |
|
同问,前几天写的时候也碰到这问题,后来用其它方法绕过去的,不知道正面应该如何解决。
|
|
| 第3楼 youxi01 | 发表于 2006-11-03 21:09 |
| 高级用户 发帖 247 积分 846 来自 湖南==》广东 | |
|
这个应该是for语句的问题了,
这一句“ for /r %%i: %%a in (%var%) do ( ”根据for语句的格式,它就认为要将%%i传给后面的程序,但是这个%%i后面还跟着个" : "所以它就认为出错了!同下面的语句:for %i: %a in (*) do echo %a,可以测试下。 解决办法: set var=1.txt 2.txt 3.txt 4.txt for %%i in (c d e f) do ( cd /d %%i: for /r . %%a in (%var%) do ( if exist %%a echo %%a ) ) pause >nul |
|
| 第4楼 不得不爱 | 发表于 2006-11-03 23:07 |
| 超级版主 发帖 2,044 积分 5,310 来自 四川南充 | |
|
其实楼上的那个点可以不要
set var=1.txt 2.txt 3.txt 4.txt for %%i in (c d e f) do ( %%i: cd /d %%i:\ for /r %%a in (%var%) do ( if exist %%a echo %%a ) ) pause >nul |
|
| 第5楼 tao0610 | 发表于 2006-11-04 03:17 |
| 高级用户 发帖 218 积分 579 | |
Originally posted by youxi01 at 2006-11-3 09:09 PM: 用for /r %%a in (%var%) do if exist %%a echo %%a 等于还是绕开了for /r后面要制定的根目录,而提前进入那个目录使它为默认目录 这个应该不是“:”的问题,下面这个代码就可以执行 @echo off set a=d set var=1.txt 2.txt for /r %a%: %%i in (%var%) do @if exist %%i echo %%i pause 应该可以调用变量,但是嵌套进FOR让%a做循环就会有问题 不知道为什么不能引用,还是嵌套多个for有特殊性? |
|
| 第6楼 无奈何 | 发表于 2006-11-04 04:54 |
| 荣誉版主 发帖 356 积分 1,338 | |
|
RE tao0610
双层 for 循环下 for /r 确实有问题,不管是否启用延迟环境变量,也没有更多可以参考的资料,我偶尔也会感觉 CMD 有些东西莫名其妙。特别是多层循环或 if 嵌套的情况。 放到你的例子中单层循环可以解决,还有一个方法是 call 代码段跳到循环外面,可以解决很多问题。 |
|
| 第7楼 tao0610 | 发表于 2006-11-04 05:36 |
| 高级用户 发帖 218 积分 579 | |
|
for /r的多层循环确实有点莫明其妙,还是老老实实用CALL了!
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |