filereadln
2023/09/18 15:54
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> | 文字列 | 読み込んだ行を格納する変数名を指定します。 |
対象バージョン
全てのバージョンで利用可能です。戻り値
戻り値として以下の変数が定義されます。変数名 | 値 | 意味 |
---|---|---|
result | 0 | 読み込んだ行が最後ではなかった |
1 | 読み込んだ行が最後に達した | |
<strvar> | 文字列 | 読み込んだ行 |
関連コマンド
関連コマンドはありません。使用方法
使用例
・ファイルを最後まで 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