Board logo

标题: 请教大家关于文本提取问题。(提取多值且位置不固定) [打印本页]

作者: Dana     时间: 2008-6-20 14:19    标题: 请教大家关于文本提取问题。(提取多值且位置不固定)

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文件中,,以便做分析,但是如何实现提取,还请大家帮忙看看,多谢。
作者: bat-zw     时间: 2008-6-20 15:20
楼主凑合用吧,又简化了下:
@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 ]
作者: Dana     时间: 2008-6-20 15:35
多谢 zw19750516 兄的指点,经过测试可以提取相应的值,上面的是先把需要的行提取出来,在用 For 提取相应的值。可惜我没有想到这个思路....
再次感谢.

Dana

[ Last edited by Dana on 2008-6-20 at 03:37 PM ]
作者: Dana     时间: 2008-6-20 16:02


  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 下来还要在看看。
作者: terse     时间: 2008-6-20 16:28
lp标签下可以简化
echo %~1
shift
if not "%~1"=="" goto lp
作者: bat-zw     时间: 2008-6-20 16:44


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

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