中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-09 00:22
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请教大家关于文本提取问题。(提取多值且位置不固定) 查看 695 回复 5
楼 主 请教大家关于文本提取问题。(提取多值且位置不固定) 发表于 2008-06-20 14:19 ·  中国 广东 深圳 电信
初级用户
潜水&&搜索
积分 70
发帖 28
注册 2007-04-22 14:36
19年会员
UID 86095
性别 男
状态 离线
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文件中,,以便做分析,但是如何实现提取,还请大家帮忙看看,多谢。
2 发表于 2008-06-20 15:20 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
楼主凑合用吧,又简化了下:

@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 ]
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
Dana +2 2008-06-20 15:31
批处理之家新域名:www.bathome.net
3 发表于 2008-06-20 15:35 ·  中国 广东 深圳 电信
初级用户
潜水&amp;&amp;搜索
积分 70
发帖 28
注册 2007-04-22 14:36
19年会员
UID 86095
性别 男
状态 离线
多谢 zw19750516 兄的指点,经过测试可以提取相应的值,上面的是先把需要的行提取出来,在用 For 提取相应的值。可惜我没有想到这个思路....
再次感谢.

Dana

[ Last edited by Dana on 2008-6-20 at 03:37 PM ]
4 发表于 2008-06-20 16:02 ·  中国 广东 深圳 电信
初级用户
潜水&amp;&amp;搜索
积分 70
发帖 28
注册 2007-04-22 14:36
19年会员
UID 86095
性别 男
状态 离线
Originally posted by zw19750516 at 2008-6-20 03:20 PM:
楼主凑合用吧,又简化了下:

@echo off
for /f "tokens=3,5,7,8 delims==/> " %%i in ('findstr "FACTORY DUT" 1.txt^|findstr /v "FIXTURE"') do call : ...

原来楼主是在最后一行中抓的......终于明白了。For 下来还要在看看。
5 发表于 2008-06-20 16:28 ·  中国 江苏 常州 电信
银牌会员
★★★
积分 2,404
发帖 946
注册 2005-09-08 13:44
20年会员
UID 42345
状态 离线
lp标签下可以简化
echo %~1
shift
if not "%~1"=="" goto lp
简单!简单!再简单!
6 发表于 2008-06-20 16:44 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
Originally posted by terse at 2008-6-20 16:28:
lp标签下可以简化
echo %~1
shift
if not "%~1"=="" goto lp

确实是的,我又忘记变量扩展了,只想着截取字符,呵呵,谢谢指正了。
批处理之家新域名:www.bathome.net
论坛跳转: