中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-07 13:02
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [分享]批处理实现文件全盘搜索 查看 3,215 回复 22
楼 主 [分享]批处理实现文件全盘搜索 发表于 2007-08-22 00:21 ·  中国 山西 临汾 联通
中级用户
★★
积分 216
发帖 81
注册 2007-08-06 12:23
19年会员
UID 94721
性别 男
状态 离线
这个批处理虽然简单,但是能实现很多功能,不管你有多少个盘一律通吃,在找到文件后会把文件所在的具体位置给你显示出来,让你能一目了然...

@echo off
echo icyheart制作
title 文件搜索
color 2a
echo.
:loop
set /p filename=请输入要查找的文件名:
echo.
echo 文件搜索中,请耐心等待...
set alldrive=c d e f g h i j k l m n o p q r s t u v w x y z
for %%i in (%alldrive%) do if exist %%i:\ dir /s /b %%i:| find "%filename%">>results.txt
type results.txt
del results.txt
echo 搜索完毕
echo.
echo.
echo 继续查询请输入y,退出请输入n
echo.
echo.======================================
set /p choice=请输入您的选择:
if %choice%==y goto loop
if %choice%==n goto end
pause>nul
:end
exit
2 发表于 2007-08-22 14:31 ·  中国 广东 珠海 香洲区 电信
初级用户
积分 57
发帖 29
注册 2006-09-27 02:04
19年会员
UID 63754
状态 离线
不错,学习了。谢谢~
3 发表于 2007-08-22 21:40 ·  中国 河北 秦皇岛 电信
初级用户
积分 68
发帖 32
注册 2007-04-01 12:12
19年会员
UID 83621
性别 男
状态 离线
呵呵,不过有简单的啊!
@echo off
set /p file=请输入要查询的文件:
for /f "delims=. tokens=1,2" %%c in ("%file%") do wmic datafile where "extension='%%d' and filename='%%c'" get name
4 发表于 2007-08-22 23:36 ·  中国 山西 吕梁 孝义市 联通
中级用户
★★
积分 216
发帖 81
注册 2007-08-06 12:23
19年会员
UID 94721
性别 男
状态 离线
嗯 是挺好的,学习
5 发表于 2007-08-22 23:37 ·  中国 山西 吕梁 孝义市 联通
中级用户
★★
积分 216
发帖 81
注册 2007-08-06 12:23
19年会员
UID 94721
性别 男
状态 离线
你是怎么想出来的这个啊,能把你写的那代码的后半部分解试一下吗
for /f "delims=. tokens=1,2" %%c in ("%file%") do wmic datafile where "extension='%%d' and filename='%%c'" get name
就是这句

[ Last edited by icyheart on 2007-8-22 at 11:39 PM ]
6 发表于 2007-08-23 00:35 ·  中国 广东 深圳 深圳沃通通信服务有限公司
初级用户
积分 22
发帖 11
注册 2007-08-22 22:52
18年会员
UID 95647
性别 男
状态 离线
不懂学习中
7 发表于 2007-08-23 09:20 ·  中国 河北 秦皇岛 电信
初级用户
积分 68
发帖 32
注册 2007-04-01 12:12
19年会员
UID 83621
性别 男
状态 离线
wmic datafile where "extension='txt' and filename='1'" get name
extension是扩展名,filename是文件名,get name应该是取它的特定信息,不加也可以,不过得到的是一大堆东西,不好看!
这个基本上就象是一个公式一样,我也才学wmic!
8 发表于 2007-08-23 09:48 ·  中国 山西 临汾 翼城县 联通
中级用户
★★
积分 216
发帖 81
注册 2007-08-06 12:23
19年会员
UID 94721
性别 男
状态 离线
嗯 谢谢啦
9 发表于 2007-08-23 14:13 ·  中国 湖北 仙桃 电信
初级用户
★★
积分 160
发帖 82
注册 2007-05-14 14:55
19年会员
UID 88494
性别 男
状态 离线
Originally posted by guxingyibei at 2007-8-22 09:40 PM:
呵呵,不过有简单的啊!
@echo off
set /p file=请输入要查询的文件:
for /f "delims=. tokens=1,2" %%c in ("%file%") do wmic datafile where "extension='%% ...


我怎么查的有点慢啊,怎么改成能指定哪个驱动器,或者哪个文件夹下吗
10 发表于 2007-08-23 14:32 ·  中国 湖北 仙桃 电信
初级用户
★★
积分 160
发帖 82
注册 2007-05-14 14:55
19年会员
UID 88494
性别 男
状态 离线
Originally posted by icyheart at 2007-8-22 12:21 AM:
这个批处理虽然简单,但是能实现很多功能,不管你有多少个盘一律通吃,在找到文件后会把文件所在的具体位置给你显示出来,让你能一目了然...
...


好像有错误
11 发表于 2007-08-23 20:31 ·  中国 河北 秦皇岛 电信
初级用户
积分 68
发帖 32
注册 2007-04-01 12:12
19年会员
UID 83621
性别 男
状态 离线
这个是全盘搜索的,所以是有点慢了!
要想指定文件夹或者盘进行搜索,还是用楼主的方法合适!
12 查文件. 发表于 2008-02-19 17:50 ·  中国 上海 联通
新手上路
积分 9
发帖 4
注册 2008-02-18 12:57
18年会员
UID 110886
性别 男
状态 离线
我的目的是在光盘中写一个批处理文件,当检测到系统中有该文件时,不做动作,如没有检测到该文件,执行安装程序.代码执行后结果不对.请帮忙看看.
@echo off
set alldrive=c d e f
for %%i in (%alldrive%) do if exist %%i:\ find "1.exe" goto another
goto :no

:another

goto end


:no
star starup.exe
goto end

:end
13 发表于 2008-02-19 23:38 ·  中国 湖北 武汉 江岸区 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
for %%i in (%alldrive%) do if exist %%i:\ find "1.exe" goto another

这一句有问题,看看if命令和find命令的用法再试试。
14 发表于 2008-02-20 01:09 ·  中国 天津 电信
银牌会员
★★★
永远的菜鸟
积分 1,335
发帖 574
注册 2007-11-27 12:50
18年会员
UID 103929
性别 男
来自 广西
状态 离线
@echo off
for %%i in (c d e f) do (
for /f "delims=" %%j in ('dir /s /b /a-d "%%i:\1.txt"') do (
start starup.exe
)
)
pause
15 发表于 2008-02-20 13:09 ·  中国 江西 赣州 电信
新手上路
积分 8
发帖 4
注册 2008-02-15 13:06
18年会员
UID 110700
性别 男
状态 离线
能否解释一下这一句
for %%i in (%alldrive%) do if exist %%i:\ dir /s /b %%i:| find "%filename%">>results.txt
论坛跳转: