中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-07 15:31
48,041 主题排行 / 350,128 发帖 / 今日 3 篇 / 48,252 会员排行
DOS批处理 & 脚本技术(批处理室) » [分享]批处理实现文件全盘搜索
可打印版本  3,228 / 22
第1楼 icyheart 发表于 2007-08-22 00:21
中级用户 发帖 81 积分 216
[分享]批处理实现文件全盘搜索
这个批处理虽然简单,但是能实现很多功能,不管你有多少个盘一律通吃,在找到文件后会把文件所在的具体位置给你显示出来,让你能一目了然...

@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楼 blue812 发表于 2007-08-22 14:31
初级用户 发帖 29 积分 57
不错,学习了。谢谢~
第3楼 guxingyibei 发表于 2007-08-22 21:40
初级用户 发帖 32 积分 68
呵呵,不过有简单的啊!
@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楼 icyheart 发表于 2007-08-22 23:36
中级用户 发帖 81 积分 216
嗯 是挺好的,学习
第5楼 icyheart 发表于 2007-08-22 23:37
中级用户 发帖 81 积分 216
你是怎么想出来的这个啊,能把你写的那代码的后半部分解试一下吗
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楼 zy125moto 发表于 2007-08-23 00:35
初级用户 发帖 11 积分 22
不懂学习中
第7楼 guxingyibei 发表于 2007-08-23 09:20
初级用户 发帖 32 积分 68
wmic datafile where "extension='txt' and filename='1'" get name
extension是扩展名,filename是文件名,get name应该是取它的特定信息,不加也可以,不过得到的是一大堆东西,不好看!
这个基本上就象是一个公式一样,我也才学wmic!
第8楼 icyheart 发表于 2007-08-23 09:48
中级用户 发帖 81 积分 216
嗯 谢谢啦
第9楼 hjkk123 发表于 2007-08-23 14:13
初级用户 发帖 82 积分 160
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楼 hjkk123 发表于 2007-08-23 14:32
初级用户 发帖 82 积分 160
Originally posted by icyheart at 2007-8-22 12:21 AM:
这个批处理虽然简单,但是能实现很多功能,不管你有多少个盘一律通吃,在找到文件后会把文件所在的具体位置给你显示出来,让你能一目了然...
...


好像有错误
第11楼 guxingyibei 发表于 2007-08-23 20:31
初级用户 发帖 32 积分 68
这个是全盘搜索的,所以是有点慢了!
要想指定文件夹或者盘进行搜索,还是用楼主的方法合适!
第12楼 lxhpt 发表于 2008-02-19 17:50
新手上路 发帖 4 积分 9
查文件.
我的目的是在光盘中写一个批处理文件,当检测到系统中有该文件时,不做动作,如没有检测到该文件,执行安装程序.代码执行后结果不对.请帮忙看看.
@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楼 lxmxn 发表于 2008-02-19 23:38
版主 发帖 4,938 积分 11,386
for %%i in (%alldrive%) do if exist %%i:\ find "1.exe" goto another

这一句有问题,看看if命令和find命令的用法再试试。
第14楼 moniuming 发表于 2008-02-20 01:09
银牌会员 发帖 574 积分 1,335 来自 广西
@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楼 minspring 发表于 2008-02-20 13:09
新手上路 发帖 4 积分 8
能否解释一下这一句
for %%i in (%alldrive%) do if exist %%i:\ dir /s /b %%i:| find "%filename%">>results.txt
1 2  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023