中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
« [1] [2] »
作者:
标题: [已结] 文本片断提取 上一主题 | 下一主题
freeants001
中级用户




积分 330
发帖 244
注册 2006-4-14
来自 湖北
状态 离线
『第 16 楼』:  

保存为s.bat
s   ab               查找  --AB--
s   ab pb          查找   --AB--   --PB--
s   PB Ab c4     查找-  --PB--  --AB--   --C4--
@echo off&setlocal enabledelayedexpansion
set KWF="a.txt"
del $$.tmp $$$.tmp>nul 2>nul
:while
    if "%~1" equ "" goto:a
    ECHO %1
    echo %~1>>$$.tmp
    shift /1
goto:while
:a
for /r %%i in (*.txt) do (set n=1& if /i "%%~nxi" neq %KWF% call:CONVERT "%%~i")
del $$.tmp $$$.tmp&pause&goto:eof

:CONVERT
set/a tp=0
for /f "usebackq delims=" %%i in ("%~1") do (
        set lb6=%%i
        set lb6=!lb6:~0,6!
        echo %%i>>$$$.tmp
        for /f %%a in ($$.tmp) do if /i "!lb6!" equ "--%%a--" (echo %%i|findstr /g:%KWF%>NUL&&set/a tp=1)
        if "!lb6!" equ "--LP--" (
                if "!tp!" equ "1" (
                        echo 文件 "%~nx1" 第 !n! 段,符合要求……
                        type $$$.tmp>>$dest$.txt
                        set/a tp=0
                        type nul>$$$.tmp
                )
                set /a n+=1
        )
)
GOTO:EOF


   此帖被 +2 点积分    点击查看详情   
评分人:【 lxh623 分数: +2  时间:2009-4-26 13:17


2009-4-26 11:17
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
freeants001
中级用户




积分 330
发帖 244
注册 2006-4-14
来自 湖北
状态 离线
『第 17 楼』:  

修该了一点,提高了些效率,用法和上面一样,支持多个字段参数查找
@echo off&setlocal enabledelayedexpansion
set KWF="a.txt"
del $$.tmp $$$.tmp>nul 2>nul
:while
    if "%~1" equ "" goto:a
    echo %~1>>$$.tmp
    shift /1
goto:while
:a
for /r %%i in (*.txt) do (set n=1& if /i "%%~nxi" neq %KWF% call:CONVERT "%%~i")
del $$.tmp $$$.tmp&pause&goto:eof

:CONVERT
set/a tp=0
for /f "usebackq delims=" %%i in ("%~1") do (
        set lb6=%%i
        set lb6=!lb6:~0,6!
        echo %%i>>$$$.tmp
        for /f %%a in ($$.tmp) do if /i "!lb6!" equ "--%%a--" if !tp! neq 1 (echo %%i|findstr /g:%KWF%>NUL&&set/a tp=1)
        if "!lb6!" equ "--LP--" (
                if "!tp!" equ "1" (
                        echo 文件 "%~nx1" 第 !n! 段,符合要求……
                        type $$$.tmp>>$dest$.txt
                        set/a tp=0
                        type nul>$$$.tmp
                )
                set /a n+=1
        )
)
GOTO:EOF


   此帖被 +2 点积分    点击查看详情   
评分人:【 lxh623 分数: +2  时间:2009-4-26 13:17


2009-4-26 11:25
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
netbenton
银牌会员

批处理编程迷


积分 1916
发帖 752
注册 2008-12-28
来自 广西
状态 离线
『第 18 楼』:  

按照楼上的思路,改进了一下,不用临时文件,提搞了速度。

freeants001真厉害,竟然这样也能理解楼主的意思。佩服!

偶是看了freeants001写的代码才明白楼主的意思。
@echo off&setlocal enabledelayedexpansion
if "%1"=="" echo.最少给出一个条件&goto :eof
for %%a in (%*) do (set "tag=!tag! --%%a-- ")

for /f "delims=:" %%a in ('findstr /g:a.txt *.txt') do set ##%%a=1
set ##a.txt=

(for /f "delims==#" %%a in ('set ##') do (
        set/a n=0,m=1
        set test=#批处理#
        for /f "delims=" %%b in ('type "%%a"') do (
                set /a n+=1
                set str!n!=%%b
                for /f %%c in ("!n!") do (for /f %%d in ("!str%%c!") do (
                        if "!tag:%%d=!" neq "!tag!" set test=!test!%%b
                )        )
                if "%%b" equ "------" (
                        echo.!test!|findstr /g:a.txt&&echo 文件 "%%~nxa" 第 !m! 段,符合要求>con&&for /l %%c in (1,1,!n!) do (echo.!str%%c!)
                        set/a n=0,m+=1
                        set test=#批处理#
                )
        )
))>b.txt

pause


   此帖被 +2 点积分    点击查看详情   
评分人:【 lxh623 分数: +2  时间:2009-4-27 21:00




精简
[你的+我的+他的]=>[大家的]    个人网志   
2009-4-27 01:23
查看资料  发送邮件  发短消息 网志  OICQ (37659560)  编辑帖子  回复  引用回复
freeants001
中级用户




积分 330
发帖 244
注册 2006-4-14
来自 湖北
状态 离线
『第 19 楼』:  

楼上的速度确实要快一些,不过如果文件大小超过几MB后,速度就慢了

2009-4-27 03:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxh623
初级用户





积分 34
发帖 30
注册 2008-11-24
状态 离线
『第 20 楼』:  

请问freeants001兄:
系统找不到$$.tmp $$$.tmp
批处理是不是基于前面的处理,我已经删除。因为曾经出来170多M。
现在想实在不行,先用freeants001兄的第一个导入再在文献软件中处理。
这个批处理采取先分段的办法,比较有创意,感谢!
另外,文件共207M。

2009-4-27 04:28
查看资料  发短消息 网志   编辑帖子  回复  引用回复
freeants001
中级用户




积分 330
发帖 244
注册 2006-4-14
来自 湖北
状态 离线
『第 21 楼』:  

系统找不到$$.tmp $$$.tmp,bat文件要放到要处理的文件目录中.
文件共207M,单个文件最大多少,如果没有上MB的话用netbenton兄的代码效率高些

2009-4-27 04:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
freeants001
中级用户




积分 330
发帖 244
注册 2006-4-14
来自 湖北
状态 离线
『第 22 楼』:  

受netbenton启发,去掉了分段临时文件,速度提高很多,用法不变
@echo off&setlocal enabledelayedexpansion
set KWF="a.txt"
del $$.tmp $$$.tmp $dest$.txt>nul 2>nul
if "%1" equ "" goto:eof
:while
    if "%~1" equ "" goto:a
    echo %~1>>$$.tmp
    shift /1
goto:while
:a
for /r %%i in (*.txt) do (set /a n=1&if /i "%%~nxi" neq %KWF% call:CONVERT "%%~i")
del $$.tmp $$$.tmp&goto:eof

:CONVERT
set/a tp=0,i=0
for /f "usebackq delims=" %%i in ("%~1") do (
        set /a i+=1
        set lb6=%%i
        SET tag!i!=%%i
        set lb6=!lb6:~0,6!
        for /f %%a in ($$.tmp) do if /i "!lb6!" equ "--%%a--" if !tp! neq 1 (echo %%i|findstr /g:%KWF%>NUL&&set/a tp=1)
        if /i "!lb6!" equ "--LP--" (
                if "!tp!" equ "1" (
                        echo 文件 "%~nx1" 第 !n! 段,符合要求……
                        call:e
                        set/a tp=0
                )
                set /a n+=1
                set /a i=0
        )
)
GOTO:EOF

:e
for /l %%i in (1,1,!i!) do echo !tag%%i!>>$dest$.txt
goto:eof


   此帖被 +2 点积分    点击查看详情   
评分人:【 lxh623 分数: +2  时间:2009-4-28 10:11


2009-4-27 05:07
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
freeants001
中级用户




积分 330
发帖 244
注册 2006-4-14
来自 湖北
状态 离线
『第 23 楼』:  

最后一贴,其中参考了netbenton的代码,为提高效率,将设置文件件由a.txt更名为set.ini
@echo off&setlocal enabledelayedexpansion
set KWF="set.ini"
if "%1" equ "" goto:eof
del $dest$.txt>nul 2>nul
for /f "delims=" %%a in ('findstr /m /g:%KWF% *.txt') do (
    set /a n=1,tp=0,i=0
    for /f "usebackq delims=" %%i in ("%%~a") do (
        set/a i+=1
        set lb6=%%i
        set tag!i!=%%i
        set lb6=!lb6:~0,6!
        for %%a in (%*) do if /i "!lb6!" equ "--%%a--" if !tp! neq 1 (echo %%i|findstr /g:%KWF%>NUL&&set/a tp=1)
        if /i "!lb6!" equ "--LP--"  (
            if "!tp!" equ "1" (
                echo 文件 "%%a" 第 !n! 段,符合要求……
                for /l %%i in (1,1,!i!) do echo !tag%%i!>>$dest$.txt
                set/a tp=0
            )
            set/a n+=1,i=0
        )
    )
)
[ Last edited by freeants001 on 2009-4-27 at 11:24 ]

   此帖被 +2 点积分    点击查看详情   
评分人:【 lxh623 分数: +2  时间:2009-4-27 21:00


2009-4-27 11:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zxxhwlkj
初级用户





积分 21
发帖 18
注册 2006-9-18
状态 离线
『第 24 楼』:  

我也来就大家帮我提一段文本,也就是这个网页中的内容http://www.luckfish.net/rising.htm,我只要这一段。
<td class="zzbg2"><img src="images/tubiao/rn.gif" width="28" height="32" align="absmiddle" /><strong> 瑞星杀毒软件网络版2008</strong></td>
                <td valign="bottom"><img src="images/zzbgy2.jpg" width="12" height="30" /></td>
              </tr>
          </table></td>
          <td>&nbsp;</td>
        </tr>
      </table>
          <table width="100%" cellpadding="2" cellspacing="1" bgcolor="#C1DFF0" class="div_d">
        <tbody>
          <tr class="zzsbg">
            <td width="120" align="center">程序名称</td>
            <td width="70" align="center">版本</td>
            <td width="80" align="center">文件大小</td>
            <td width="60" align="center">更新时间</td>
            <td width="37" align="center">下载</td>
            <td width="310" align="center">使用说明</td>
          </tr>
          <tr bgcolor="#ffffff">
            <td align="center" bgcolor="#ffffff">2008版升级包</td>
            <td align="center" bgcolor="#ffffff">20.90.91</td>
            <td align="center" bgcolor="#ffffff">152.39MB</td>
            <td align="center" bgcolor="#ffffff">2009-04-29</td>
            <td align="center" bgcolor="#ffffff"><a href="http://rsdown.rising.com.cn/netver/08netver/lkioje123/Update.exe">下载</a></td>
            <td align="center" bgcolor="#ffffff" class="fent_17px"><div align="center">系统中心手动升级专用 (只能用“另存为”下载)</div></td>
          </tr>
          <tr bgcolor="#ffffff">
            <td align="center" bgcolor="#F3F9FC">系统安装包</td>

[ Last edited by zxxhwlkj on 2009-5-1 at 06:33 ]

2009-5-1 06:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
hjh700913
新手上路





积分 2
发帖 29
注册 2009-4-1
状态 离线
『第 25 楼』:  

hhhhhhhhh

2009-5-6 22:38
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
hjh700913
新手上路





积分 2
发帖 29
注册 2009-4-1
状态 离线
『第 26 楼』:  

hhhhhhhhhhhhhhhhhhhhhhhhhh

   此帖被 -3 点积分     点击查看详情   
评分人:【 yishanju 分数: -3  时间:2009-5-7 00:49


2009-5-6 22:38
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: