今回からテキストファイルの処理を紹介します。まずはシンプルなテキストの先頭10行を出力するプログラムです。
Option Explicit Dim fso, args set fso = CreateObject("Scripting.FileSystemObject") set args = WScript.Arguments Const MAXLEN = 10 ReadFile args(0) WScript.Quit sub ReadFile( filename ) dim linecount, ofile, line linecount = 0 if fso.FileExists( filename ) then set ofile = fso.OpenTextFile( filename, 1 ) do while ofile.AtEndOfStream = false line = ofile.readline linecount = linecount + 1 WScript.echo line if linecount > MAXLEN then exit do end if loop ofile.close else WScript.echo "Can't file " & filename end if end sub
何も工夫のないシンプルなテンプレートですが、テキスト読み出しの基本となるテンプレートのため、構造や特性のわからないログを解析するときなどは、このテンプレートがスタートラインになります。
Sub ReadFile( filename )
引数にテキストファイルのファイル名を渡すとそのテキストファイルの先頭10行を出力するというものです。
if fso.FileExists( filename ) then
はファイルが存在するかどうかをチェックしています。
set ofile = fso.OpenTextFile( filename, 1 )
は、テキストファイルをオープンしています。なお、この開き方はテキストファイルがS-JISフォーマットを想定した開き方です。UTF16やUTF8の場合はこの方法では開けません。
その場合エラーにはなりませんが、何も表示されなかったり、文字化けしたりします。
do while ofile.AtEndOfStream = false
からLoopまでが、ファイルの最後まで繰り返せというループです。
line = ofile.readline
一行読み込んでlineという変数に保存せよという意味です。
if linecount > MAXLEN then
exit do
end if
は、行数がMAXLEN(10)行を超えたらループを終了しろという意味です。
ofile.close
はファイルを閉じろです。
今回はここまで、次回はいよいよCSVです。