中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [分享]多关键字自动批量搜索
作者:
标题: [分享]多关键字自动批量搜索 上一主题 | 下一主题
judas
初级用户





积分 34
发帖 11
注册 2006-12-19
状态 离线
『楼 主』:  [分享]多关键字自动批量搜索

工作需要,要在上百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.如果关键字中含有“&”类型的字符程序就会出错...

如有什么疏漏的部分,还望各位大哥批评指正!!    :)

   此帖被 +16 点积分      点击查看详情   
评分人:【 HAT 分数: +8  时间:2009-2-4 18:52
评分人:【 yishanju 分数: +8  时间:2009-2-5 00:28


2009-2-4 18:07
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yishanju
银牌会员

[b]看你妹啊[/b]


积分 1488
发帖 1357
注册 2006-5-20
状态 离线
『第 2 楼』:  

推荐你有机会也尝试用一下这几个工具:http://baiy.cn/

   此帖被 +1 点积分    点击查看详情   
评分人:【 judas 分数: +1  时间:2009-2-5 09:29





有问题请发论坛或者自行搜索,再短消息问我的统统是SB
2009-2-5 00:30
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: