Board logo

标题: 请帮我看看程序的问题!!!!!! [打印本页]

作者: wabm     时间: 2007-12-9 17:59    标题: 请帮我看看程序的问题!!!!!!
这是我写的一个文件搜索的程序!
我先取得磁盘一共有几个分区,把分区信息先存在 c:\Disk_Inf.txt 中
内容如下: Disk_Inf.txt
C:\
D:\
E:\
F:\
G:\

然后用下列语句去每个分区搜索
setlocal enabledelayedexpansion
for /f "delims=" %%i in (C:\Disk_Inf.txt) do (
set a=%%i
for /r %a% %%k in (*%File_Name%*) do (
echo %%~dpnxk>>C:\Result.txt
set /a File_Num+=1
)
)
可是这个语句不起作用,它只会重复的去 c: 盘搜索,一共重复输出5次 C: 盘的搜索结果,而 D: E: F: G: 根本就没有去搜索
想请大家帮我看看是哪里错了,先谢谢拉!!!!

作者: HAT     时间: 2007-12-9 18:23
开启变量延迟扩展以后,需要用感叹号代替百分号。

作者: abcd     时间: 2007-12-9 18:24
for /r %a% %%k in (*%File_Name%*) do (
问题在那个%a%

作者: 26933062     时间: 2007-12-9 18:47
for /r 好像不能在勘套里使用变量,用call跳出for来处理

作者: wabm     时间: 2007-12-10 08:54
我试过了,把 %a% 改为 !a!也不可以,
我看看用 call 跳出 for 可不可以,
谢谢各位拉!!!

作者: wabm     时间: 2007-12-10 15:37
问题解决拉;
用pushd %%i 把当前驱动器号先保存起来,
这样就不用在 for /r 里在用变量来表示当前驱动器拉!!!