标题: [分享]多关键字自动批量搜索
[打印本页]
作者: judas
时间: 2009-2-4 18:07
标题: [分享]多关键字自动批量搜索
工作需要,要在上百GB的文件数据中以数千个不同的关键字进行搜索,并将搜索到的文件拷贝出来。
由于工作量较大,重复工作太多就想用批处理试试。于是在论坛中搜索相关资料,东拼西凑地写了一个可以多关键字自动搜索的批处理。
具体实现步骤如下:
1.遍历目录:
要搜索的数据不是时常变动,所以只在该文件夹变更后遍历该目录一次就行了。
遍历目录代码:
for /r L:\test %%i in (*.*) do echo %%i>>dir.txt
2.批量搜索:
对遍历目录后生成的dir.txt文件进行多关键字自动搜索,要求将需要搜索的关键字竖排复制到search.txt文件中并在最后一行以end结尾。
search.txt内容如:
123
12
111
end
批量搜索代码:
@echo off
echo 自动搜索 by judas
title 文件搜索
color 1f
:loop
echo.
for /f "delims=" %%a in (search.txt) do (
set filename=%%a
more +1 search.txt > search_tmp.txt
move /y search_tmp.txt search.txt
echo %%a >> done.log
goto show
)
:show
echo 搜索值为:
echo.
echo %filename%
if "%filename%"=="end" goto end
echo.
goto search
echo.
:search
echo 文件搜索中,请耐心等待...
findstr /i /c:"%filename%" dir.txt>>temp.txt
type temp.txt
for /f "tokens=*" %%b in (temp.txt) do echo "%%b">>results.txt
echo 搜索完毕
del temp.txt
echo.
echo.
echo continue...
echo %filename%
echo.
echo.======================================
goto loop
pause>nul
:end
pause
exit
搜索完的关键字被转移到了一个叫done.log的日志文件中,搜索的结果保存在results.txt中
3.拷贝搜索结果:
for /f "delims=" %%i in (results.txt) do copy %%i "E:\test"
因为能力有限,而且是学习论坛中相关帖子写出来的,所以程序难免有些简陋,
目前存在部分问题:
1.变量%filename%为空时的传递问题,只能加个小尾巴“end”。(很笨拙的方法 !-_- )
2.如果关键字中含有“&”类型的字符程序就会出错...
如有什么疏漏的部分,还望各位大哥批评指正!! :)
作者: yishanju
时间: 2009-2-5 00:30
推荐你有机会也尝试用一下这几个工具:
http://baiy.cn/