Board logo

标题: 如何取得指定字符的參數值 [打印本页]

作者: loveant521     时间: 2007-9-30 12:17    标题: 如何取得指定字符的參數值
我想在這個穩當中找到Total_Test_Time的值,我的源代碼是
@echo off
for /f "tokens=* delims=<>" %%i in ('findstr /i "Total_Test_Time" c:\2\*.xml') do @echo %%i
pause
可是怎麼不行呢?tokens最多只能定位31個字符,不能到達Total_Test_Time那裡,該怎麼辦呢??


<PTSD><UUT><Date_Time>09/08/07 06:05:26</Date_Time><PSN>7F1110165</PSN><ESN></ESN><Test_Mode_Attribute>0</Test_Mode_Attribute><Adapter_ID>size4_sk</Adapter_ID><HWID>2001</HWID><Module_Code>0203291</Module_Code><Basic_Product_Code>0542523</Basic_Product_Code><Product_Code>0542523</Product_Code><Module_Bom_Rev>0</Module_Bom_Rev><ComputerName>7f335d08</ComputerName><SW_Versions><SW_Type>MCUC</SW_Type><SW_Version>0.031</SW_Version><Station_SW_Version>42.2</Station_SW_Version><PTSD_Version>1.2.12.11</PTSD_Version><PM><Project_Name>pm_universal.seq</Project_Name><Project_Version>_</Project_Version><Object_Name>pm_universal-bo1dariu#304.4\pm_universal\products\pm_universal.seq</Object_Name><Object_ClusterID>6DD633AA</Object_ClusterID><Object_Version>_</Object_Version></PM><TP><Project_Name>tp_335_size4.seq</Project_Name><Project_Version>_</Project_Version><Object_Name>VC07_Family\tp_335_size4-ul1dariu#43.3\tp_335_size4\products\tp_335_size4.seq</Object_Name><Object_ClusterID>74161EBB</Object_ClusterID><Object_Version>_</Object_Version></TP></SW_Versions><CustomData><TMA_335>STANDARD</TMA_335></CustomData><Line_ID>7F</Line_ID><Phase_ID>335</Phase_ID><Station_ID>7F335D08</Station_ID><Execution_ID>1</Execution_ID><Factory>Foxconn LH China</Factory><Factory_Code>7</Factory_Code><Test_Status>1</Test_Status><Test_Counter>1</Test_Counter><Total_Test_Time>30538</Total_Test_Time><Load_Time>29</Load_Time><ID_Time>4278</ID_Time><Test_Time>16531</Test_Time><Release_Time>4727</Release_Time><Handling_Time>50377</Handling_Time></UUT><Test_Results><Test><Step_ID>17443</Step_ID><Step_Rev>1</Step_Rev><Result>1.000000</Result><Status>1</Status><Name>Set

作者: lxmxn     时间: 2007-9-30 15:15
@echo off & SetLocal EnableDelayedExpansion
for /f "delims=" %%a in (i.txt) do (
set "str=%%a"
set "str=!str:>=!"
set "str=!str:<=!"
set "str=!str:/=!"
set "str=!str:Total_Test_Time=□!"
rem echo !str!
for /f "delims=□ tokens=2" %%b in ("!str!") do echo result=%%b
)
pause

作者: lxmxn     时间: 2007-9-30 15:17    标题: 用awk更简单
gawk -F"<Total_Test_Time>|</Total_Test_Time>" "{print $2}" i.txt

作者: loveant521     时间: 2007-9-30 17:37    标题: 好奇怪喔
是不是這個網站會自動回車呢?我那斷代碼是一個整行的,我把網站上的複製下來用你的代碼就可以,用我自己原來的文件就不行了,真是奇怪呢!

作者: lxmxn     时间: 2007-9-30 18:07
注意自动换行的问题.

作者: loveant521     时间: 2007-9-30 18:27
下面這個是我原來的文件,我不知道怎麼上傳,所以放到我的空間了,麻煩你幫我再看一下
http://loveant521.ys168.com/
卡巴斯基文件夾裡面的那個i.txt
我明白你那代碼的意思了,可是我自己弄出來的不行啊,拜託喔

作者: lxmxn     时间: 2007-9-30 19:34
你这个文件里面的第3行太长了,cmd无法处理。
用3楼的awk处理吧。

作者: loveant521     时间: 2007-9-30 19:40
這樣阿,怪不得呢!謝謝喔!