中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-06 20:16
48,039 主题排行 / 350,124 发帖 / 今日 0 篇 / 48,252 会员排行
DOS批处理 & 脚本技术(批处理室) » 请帮我看看程序的问题!!!!!!
可打印版本  686 / 5
第1楼 wabm 发表于 2007-12-09 17:59
初级用户 发帖 10 积分 27
请帮我看看程序的问题!!!!!!
这是我写的一个文件搜索的程序!
我先取得磁盘一共有几个分区,把分区信息先存在 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: 根本就没有去搜索
想请大家帮我看看是哪里错了,先谢谢拉!!!!
第2楼 HAT 发表于 2007-12-09 18:23
版主 发帖 5,017 积分 9,023
开启变量延迟扩展以后,需要用感叹号代替百分号。
第3楼 abcd 发表于 2007-12-09 18:24
银牌会员 发帖 739 积分 1,436
for /r %a% %%k in (*%File_Name%*) do (
问题在那个%a%
第4楼 26933062 发表于 2007-12-09 18:47
银牌会员 发帖 879 积分 2,268
for /r 好像不能在勘套里使用变量,用call跳出for来处理
第5楼 wabm 发表于 2007-12-10 08:54
初级用户 发帖 10 积分 27
我试过了,把 %a% 改为 !a!也不可以,
我看看用 call 跳出 for 可不可以,
谢谢各位拉!!!
第6楼 wabm 发表于 2007-12-10 15:37
初级用户 发帖 10 积分 27
问题解决拉;
用pushd %%i 把当前驱动器号先保存起来,
这样就不用在 for /r 里在用变量来表示当前驱动器拉!!!
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023