批处理中for()的问题

来源:百度知道 编辑:UC知道 时间:2024/07/05 15:30:26
在temp.txt中保存不同文件夹的路径,然后希望分别进入这些文件夹,读取其中的文件
for /f %%a in (temp.txt) do (
for /r %%a %%i in (*.bat) do (
type %%i
)
)
结果显示不该出现%%a
想问:1、for能这样双循环吗?
2、for /r 这里连用%%a %%i,的确不对,那应该怎样写?
希望有达人详细解说一下for的使用事项

1.for当然可以多层套循环,只是每个for命令指定的变量%%a不要重复,那样会乱套的..

2.for /r后面跟的是路径,是指某个位置的路径,你这的%%a是指temp.txt文件的每一行了,不应该这么写。
可能是你的这个txt文件每行都是一个路径吧.???
for /r后面跟定的路径可以用变量表示,但不能是前一个for中的变量%%a,需是其它类型的变量,如%windir%等;
可以采用变通的方法在下一个for之前加上cd命令,将命令行位置切换至某路径,然后下一个for /r后面就不用加路径了,就是以刚才切换过来的路径为准..

写个例子,全盘(cdef盘)搜索temp.txt文件.
@echo off
for %%a in (c d e f) do (
cd /d %%a:
for /r %%b in (temp.txt) do echo %%b
)
pause

第一个批处理已经把c:\tddownload\里.exe文件加上隐藏属性 所以第二个批处理在c:\tddownload\里无法搜索到文件,也就无法执行 直接用 attrib c:\tddownload\*.exe -s -h /s /d pause