2016-07-01 8 views
0

私は各行の最初の4文字をチェックするはずのスクリプトを持っています。動いていない。HL7文書の行を正しく処理していませんか?

MSH|... 
EVN|... 
PID|... 
MSH|... 
EVN|... 
PID|... 
MSH|... 
EVN|... 
PID|... 

、ここでは私のコードです:

Dim fso 
Set fso = CreateObject("Scripting.FileSystemObject") 
Set file = fso.OpenTextFile (f.path, 1) 
Do Until file.AtEndOfStream 
    line = file.Readline 
    wscript.echo left(line,4) 
Loop 

これは以下を出力します

MSH| 
MSH| 
MSH| 

はほかに、私が使うべきものがある私は、このようになりHL7文書を処理していますReadline

答えて

0

これを別のタスクに再訪し、より良い方法を見つけました。次のループと条件のセットは、HL7メッセージでいっぱいの.datファイルをメッセージ、セグメント、フィールド、およびサブフィールドに分類します。繰り返しフィールド(〜)は考慮されません。

最初の2つのFORは改行と改行の問題を解決します。各メッセージ間には1fがあり、各セグメント間にはcrがあることが分かります。

Dim fso 
Set fso = CreateObject("Scripting.FileSystemObject") 
file = fso.OpenTextFile(f.path).ReadAll 
for each msg in split(file,vbLf) 
    if msg <> "" then 
     msgType = split(split(msg,"|")(8),"^")(1) 'results in something like A08 
     for each line in split(msg,vbCr) 
      if line <> "" then 
       seg = left(line,3) 'MSH, PID, etc 
       for each field in split(line,"|") 
        if instr(field,"^") > 0 then 
         for each subfield in split(field,"^") 
          'do code here for each subfield 
         next 
        end if 
       next 
      end if 
     next 
    end if 
next 
1

replace in files機能を使用して、\rのすべてのインスタンスを\r\nに置き換えました。これは問題を解決するようです。

+1

http://stackoverflow.com/questions/17180739/vbscript-skipline-and-cr-line-endings/17181207#17181207 – sqlab