我想把登录到网关执行命令的结果保存在文本文件中
然后对文本文件进行分析,取出有用的数据
下面是文本文件的部分内容bj-t-gw1#show processes cpu
CPU utilization for five seconds: 24%/18%; one minute: 26%; five minutes: 27%
 PID Runtime(ms)   Invoked      uSecs   5Sec   1Min   5Min TTY Process 
   1      434776   4201085        103  0.00%  0.00%  0.00%   0 Load Meter       
   2         612       859        712  0.00%  0.09%  0.09%   3 Virtual Exec     
   3    84611528   5768738      14667  2.61%  0.51%  0.39%   0 Check heaps      
   4           0         1          0  0.00%  0.00%  0.00%   0 Chunk Manager    
   5        4768     10081        472  0.00%  0.00%  0.00%   0 Pool Manager     
   6           0         2          0  0.00%  0.00%  0.00%   0 Timers           
bj-t-gw1#show controllers e1
E1 0 is up.                                          
  Applique type is Channelized E1 - unbalanced
  No alarms detected.
  alarm-trigger is not set我想取出有用的数据是
five seconds=18%-24%
one minute=26%
判断E1 0是否up
我怎样才能实现呢,这个问题困扰我好久了
希望高人指点我

解决方案 »

  1.   

    说清楚点你的要求,例如,你的命令是在什么地方输入的(dos窗口?应用软件?)?
    你的文本文件是怎么储存的?是每次运行命令都把结果存到一个新的文本文件还是追加到一个固定的文本文件?
    运行命令的结果格式、长度是不是固定的?会改变的是那些部分?
      

  2.   

    如果你所要查找的数据有固定的名称,可以用字符串查找的方法缩小范围。
    如你所取的文本文件内容存放在sTemp中,要查five seconds: 18%-24%;,可以:
    Dim sTemp As String
        Dim iStartPos As Integer
        Dim iEndPos As Integer
        Dim sData As String    sTemp = "CPU utilization for five seconds: 24%/18%; one minute: 26%; five minutes: 27%"
        
        iStartPos = InStr(sTemp, "five seconds") + Len("five seconds") + 1
        iEndPos = InStr(Right(sTemp, Len(sTemp) - iStartPos), ";") + iStartPos
        sData = Mid(sTemp, iStartPos, iEndPos - iStartPos)
        
        MsgBox sData
      

  3.   

    我的文本是通过telnet登录后
    执行一些show命令
    把结果保存在一个txt文本文件中
    现在要对他进行分析
    例如:
    找到字符串
    CPU utilization for five seconds: 24%/18%; one minute: 26%; five minutes: 27%
    取出24%/18%  26%
    找到字符串
    E1 0 is up
    取出E1 0 is 后面的字符串
    应该怎样做呢
      

  4.   

    问题是查找的字符串数值不固定呀!!
    CPU utilization for five seconds: 24%/18%; one minute: 26%; five minutes: 27%
    我所查找的cpu每5秒占用率数值不一定是什么
    E1 0 is up
    我所查找的E1状态可能是up,也可能是down
    怎样才能取出他们的置呢
      

  5.   

    用位置来判断,例如:starstr$="CPU utilization for five seconds:"
    endstr$="one minute:"用instr找出strstr$的位置A以及endstr$的位置B
    然后你想要的值就是:mid(源字符串,a+1,(b-a))
    大概思路是这样。同理,要得到E1 0 is的值,可以通过查找“E1 0 is”和“Applique type is Channelized E1 - unbalanced”两个字符串的位置再根据他们的值来得到结果。
      

  6.   

    使用lineinput读取出E1 0 is up这一行的内容
    s=lineinput #1
    if left(trim(s),7)="E1 0 is" then
       t=mid(trim(s),8)
    endif
    判断t的内容就可以了
    读取前面的内容用老六的方法应该可以
      

  7.   

    哦,上面有点错,应该是:
    然后你想要的值就是:mid(源字符串,A+len(starstr$),(B-a-len(starstr$))
    思路是这样,但具体的值你自己再看看吧,我这里没有测试环境。