中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请教大家关于文本提取问题。(提取多值且位置不固定)
作者:
标题: 请教大家关于文本提取问题。(提取多值且位置不固定) 上一主题 | 下一主题
Dana
初级用户

潜水&&搜索



积分 70
发帖 28
注册 2007-4-22
状态 离线
『楼 主』:  请教大家关于文本提取问题。(提取多值且位置不固定)

4/21/2008 12:17:55 AM  Slave Server=192.168.1.2
4/21/2008 12:17:55 AM  OK
4/21/2008 12:17:55 AM  <?xml version="1.0" testprogram" ?>
<BATCH>
<FACTORY TESTER="TEST5" />
<PRODUCT />
<REFS />
<PANEL>
<DUT ID="D410778444512" STATUS="Passed" TIMESTAMP="2008-04-21 00:17:55" TESTTIME="60.547000">
</DUT>
</PANEL>
</BATCH>
4/21/2008 12:17:55 AM  <?xml version="1.0"?>< TEST="" TESTER="TEST5" FIXTURE="" USER="" /><PANEL ID="" COMMENT="" RUNMODE="" TIMESTAMP="" TESTTIME="" WAITTIME="" STATUS="" /><DUT ID="D410778444512" UID="1" STATUS="Passed" TIMESTAMP="2008-04-21 00:17:55" TESTTIME="60.547000" ENDTIME="" PANELIDX="" SOCKET="" COMMENT="" />

上面是文本一部分内容内容,现在的想法是可以一次将上面红色字体提取后写入另一个TXT文件中,,以便做分析,但是如何实现提取,还请大家帮忙看看,多谢。

2008-6-20 14:19
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 2 楼』:  

楼主凑合用吧,又简化了下:
@echo off
for /f "tokens=3,5,7,8 delims==/> " %%i in ('findstr "FACTORY DUT" 1.txt^|findstr /v "FIXTURE"') do call :lp %%i %%j %%k %%l
pause>nul&goto :eof
:lp
set str=%1
if defined str echo %str:~1,-1%
if defined str shift&goto lp
[ Last edited by zw19750516 on 2008-6-20 at 03:37 PM ]

   此帖被 +2 点积分    点击查看详情   
评分人:【 Dana 分数: +2  时间:2008-6-20 15:31




批处理之家新域名:www.bathome.net
2008-6-20 15:20
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
Dana
初级用户

潜水&&搜索



积分 70
发帖 28
注册 2007-4-22
状态 离线
『第 3 楼』:  

多谢 zw19750516 兄的指点,经过测试可以提取相应的值,上面的是先把需要的行提取出来,在用 For 提取相应的值。可惜我没有想到这个思路....
再次感谢.

Dana

[ Last edited by Dana on 2008-6-20 at 03:37 PM ]

2008-6-20 15:35
查看资料  发短消息 网志   编辑帖子  回复  引用回复
Dana
初级用户

潜水&&搜索



积分 70
发帖 28
注册 2007-4-22
状态 离线
『第 4 楼』:  



  Quote:
Originally posted by zw19750516 at 2008-6-20 03:20 PM:
楼主凑合用吧,又简化了下:
[code]
@echo off
for /f "tokens=3,5,7,8 delims==/> " %%i in ('findstr "FACTORY DUT" 1.txt^|findstr /v "FIXTURE"') do call : ...

原来楼主是在最后一行中抓的......终于明白了。For 下来还要在看看。

2008-6-20 16:02
查看资料  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 5 楼』:  

lp标签下可以简化
echo %~1
shift
if not "%~1"=="" goto lp



简单!简单!再简单!
2008-6-20 16:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 6 楼』:  



  Quote:
Originally posted by terse at 2008-6-20 16:28:
lp标签下可以简化
echo %~1
shift
if not "%~1"=="" goto lp

确实是的,我又忘记变量扩展了,只想着截取字符,呵呵,谢谢指正了。



批处理之家新域名:www.bathome.net
2008-6-20 16:44
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复

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


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



论坛跳转: