filereadln

【Tera Term マクロ言語】コマンドリファレンス

filereadln 機能

[ファイル操作コマンド]

ファイルから一行読みます。

コマンドライン

filereadln <file handle> <strvar>

機能説明

開いているファイル *1 から、ファイルポインタのある行を1行読み込みます。
読み込み完了時、ファイルポインタを次の行へ移動しておきます。

Tera Term バージョン 4.102 より、マクロファイルのエンコーディングとして UTF-8 および UTF-16 (いずれも BOM の有無はチェック) に対応しているものの、filereadln はどちらにも未対応のため、対象ファイルが UTF-8 または UTF-16 の場合に文字化けします。
※ Tera Term バージョン 4.103 にて確認。

なお、文字化けすると記載しましたが、SJIS でも UTF-8 でも ASCII 部分は同一です。そのため、UTF-8 のファイルであっても、英数字部分は問題なく読み込むことが可能です。
<file handle>
ファイルハンドル <file handle> で指定されるファイルから一行読みます。
この時の対象となる行(読む行)は、ファイルポインタで指示された行です。
<strvar>
読み込んだ行は、文字列変数 <strvar> に格納します。
ファイルポインタは次の行の始めへ移動します。

もし、行を読んでいる間にファイルポインタがファイルの最後に達した場合、システム変数 <result> に 1 が格納されます。
それ以外の場合、<result> に 0 が格納されます。

改行のみの場合は、文字列変数は空となり、<result> には 0 が格納されます。

パラメータの説明

指定するパラメータは以下の通りです。
パラメータパラメータ説明
<file handle>整数ファイルハンドルを指定します。
<strvar>文字列読み込んだ行を格納する変数名を指定します。

対象バージョン

全てのバージョンで利用可能です。

戻り値

戻り値として以下の変数が定義されます。
変数名意味
result0読み込んだ行が最後ではなかった
1読み込んだ行が最後に達した
<strvar>文字列読み込んだ行
<strvar> は、コマンド実行時に指定した任意の文字列です。

関連コマンド

関連コマンドはありません。

*1 : fileopen でファイルハンドルを取得しているファイル

使用方法

使用例

・ファイルを最後まで messagebox で表示する場合 (goto 文)
; ファイルオープン
fileopen fhandle 'test.txt' 0

:loop
; 一行読み込み
filereadln fhandle line
if result goto fclose
; 読み込んだ行を表示
messagebox line 'test.txt'
; ファイル最後まで繰り返す
goto loop

:fclose
; ファイルクローズ
fileclose fhandle
・ファイルを最後まで messagebox で表示する場合 (while 文)
; ファイルオープン
fileopen fhandle 'test.txt' 0
while 1
    ; 一行読み込み
    filereadln fhandle line
    if result=1 then 
          break
    endif
    ; 読み込んだ行を表示
    messagebox line 'test.txt'
    ; ファイル最後まで繰り返す
endwhile
; ファイルクローズ
fileclose fhandle
・ファイルに含まれるキーワードを置換する場合
; ファイルに含まれるキーワードを置換する
infile = 'testdata.txt'
outfile = 'testdata_output.txt'

oldkeyword = 'BBB'
newkeyword = 'zzz'

fileopen ifd infile 0
fileopen ofd outfile 0

while 1
	filereadln ifd line
	if result=1 then
		break
	endif
	strreplace line 1 oldkeyword newkeyword
	filewriteln ofd line
endwhile

fileclose ifd
fileclose ofd

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

[testdata.txt]
AABBBCCCCDDDDD
###DDCCCBBBBAAAAA####
1234567890

[testdata_output.txt]
AAzzzCCCCDDDDD
###DDCCCzzzBAAAAA####
1234567890

サンプル

以下のサンプルが存在します。

備考

特にありません。