VBScript(QTP) - 固定宽度文件 - 检查内容

时间:2011-09-14 12:02:18

标签: scripting vbscript qtp

如果我有一个带有specs的固定宽度文件(.txt)(哪个字符形成哪个字段),例如:

1-10 id_no
11-25 seq
26-30 cur_code
31-40 first
41-90 cur_desc
91-120 misa

示例3文件中的行:

7284585   98354u38654     347 USD        jfsnkjndf;kjsdgn;jndfsjngjdsngnkjdsfngkjsdnfgjnfhUnited States Dollar
728458598354u38654        347 USD    jfsnkjndf;kjsdgn;jndfsjngjdsngnkjdsfngkjsdnfgjn      Euro
7284585   98354u38654347      GBP        jfsnkjndf;kjsdgn;jndfsjngjdsngnkjdsfngkjsdnfgjn  Pound

我必须编写什么vbscript代码:

  • 阅读文件中的所有行
  • 将任何行号和cur_desc值输出到满足此条件的另一个文件(即'test_currency_DDMMYYYY.txt'):(cur_code = 'USD' and cur_desc != 'United States Dollar')

1 个答案:

答案 0 :(得分:2)

逐行读取文本文件,解析并写入另一个文本文件:

Const ForReading = 1
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set outPut = objFSO.CreateTextFile("c:\\output.txt", true);
Set objTextFile = objFSO.OpenTextFile _
  ("c:\mytextfile.txt", ForReading)
Do Until objTextFile.AtEndOfStream
  strLine = objTextFile.Readline
' parse strLine
  id_no = Mid(strLine, 1, 9)
  seq = Mid(strLine, 11, 14) ' and so on
  outPut.WriteLine(id_no & "_" & seq);
Loop
outPut.Close();
Set objFSO = Nothing
Set outPut = Nothing

解析字符串可以使用VB string functoins执行,例如Split,Mid,Len等。 E.g

id_no = Mid(strLine, 1, 9)
seq = Mid(strLine, 11, 14) ' and so on