中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-08 01:22
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]用dir /s搜索文件夹的问题 查看 971 回复 9
楼 主 [求助]用dir /s搜索文件夹的问题 发表于 2008-04-10 15:00 ·  IANA 局域网IP(Private-Use)
初级用户
积分 70
发帖 30
注册 2008-01-17 14:22
18年会员
UID 108844
性别 男
状态 离线
我知道用dir /s可以搜索,例如我键入dir /s c:\temp就会在c盘下搜索所有的temp文件夹。但是如果c盘根目录下有temp文件夹,那么它就会显示这个文件夹里面的文件,而不会显示别的了。

如何避免这个情况?
2 发表于 2008-04-10 15:07 ·  中国 江苏 苏州 移动
银牌会员
★★★
积分 1,608
发帖 780
注册 2007-10-07 10:19
18年会员
UID 99089
性别 男
状态 离线
dir/s
是以某个目录为根进行搜索的!
所以你的说法不对
3 发表于 2008-04-10 15:11 ·  IANA 局域网IP(Private-Use)
初级用户
积分 70
发帖 30
注册 2008-01-17 14:22
18年会员
UID 108844
性别 男
状态 离线
楼上的说的对,但毕竟我们一般都是拿来做搜索用的不是吗?那我就改个说法好了,加入我需要搜索c盘下temp文件夹,目前我的c盘根目录下有一个temp文件夹,那么我需要怎么写呢?

[ Last edited by bigfaint on 2008-4-10 at 03:14 PM ]
4 发表于 2008-04-10 15:28 ·  中国 福建 福州 连江县 电信
中级用户
★★
积分 356
发帖 115
注册 2004-07-27 00:00
22年会员
UID 29114
性别 男
状态 离线
@echo off

for /r c:\ %%i in (".") do if exist %%~pditemp\ echo %%~pditemp

pause
5 发表于 2008-04-10 16:05 ·  中国 湖南 长沙 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线
dir/s/ad c:\temp
致精致简!
6 发表于 2008-04-10 17:11 ·  IANA 局域网IP(Private-Use)
初级用户
积分 70
发帖 30
注册 2008-01-17 14:22
18年会员
UID 108844
性别 男
状态 离线
如果我有c:\temp这个文件夹,用dir/s/ad c:\temp,得到的结果是

C:\>dir/s/ad c:\temp
驱动器 C 中的卷没有标签。
卷的序列号是 3C1B-5AEF

c:\temp 的目录

2008-01-30 13:06 <DIR> .
2008-01-30 13:06 <DIR> ..
0 个文件 0 字节

所列文件总数:
0 个文件 0 字节
2 个目录 6,034,468,864 可用字节

如果我没有c:\temp这个文件夹,执行这个命令的结果是
C:\>dir/s/ad c:\temp
驱动器 C 中的卷没有标签。
卷的序列号是 3C1B-5AEF

c:\backup 的目录

2008-04-10 14:36 <DIR> temp
0 个文件 0 字节

c:\Documents and Settings\Administrator\Local Settings 的目录

2008-02-28 17:51 <DIR> Temp
0 个文件 0 字节

c:\Documents and Settings\All Users\Application Data\Microsoft\Search\D

....(以下省略)
7 发表于 2008-04-10 17:12 ·  IANA 局域网IP(Private-Use)
初级用户
积分 70
发帖 30
注册 2008-01-17 14:22
18年会员
UID 108844
性别 男
状态 离线
to 4楼
用for的方法我也知道,不过我想了解一下能不能用dir /s解决这个问题,dir /s到底是怎么工作的
8 发表于 2008-04-10 18:19 ·  中国 湖南 长沙 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线
dir/b/s/ad c:\temp
致精致简!
9 发表于 2008-04-11 09:02 ·  IANA 局域网IP(Private-Use)
初级用户
积分 70
发帖 30
注册 2008-01-17 14:22
18年会员
UID 108844
性别 男
状态 离线
...请试过再发贴好不好?
10 发表于 2008-04-11 11:59 ·  中国 广东 广州 电信
银牌会员
★★★
永远的菜鸟
积分 1,335
发帖 574
注册 2007-11-27 12:50
18年会员
UID 103929
性别 男
来自 广西
状态 离线
这个问题曾经困扰了我很久,下面的代码是在论坛里多位高手的帮助下完成的,希望合你的意:

@echo off
:aa
echo.
echo 如果为中文目录,请在文件夹名前加上"\"
echo.
set /p aa=请输入要查找的文件夹(CC退出):
if "%aa%"=="CC" exit /b
for %%a in (c d e f) do (
for /f "delims=" %%i in ('dir /a /s /ad /b "%%a:\*" 2^>nul^|findstr /i /e "\%aa%"') do (
echo "%%i"
)
)
echo.&pause&cls&goto aa
论坛跳转: