Tera Termマクロでファイルから1行ずつ読み込む方法
Tera Termマクロでファイルから1行ずつ読み込む方法を解説します。
ファイルの開き方
ファイルを開くには次のようにします。
fileopen fh 'C:\Users\foo\Desktop\cmd.txt' 0
ファイルを開くためのTTLコマンドはfileopenで、引数は3つあります。
最初の「fh」はファイルハンドルです。ファイルハンドルというのはファイルの識別子です。 ファイルの操作(読んだり書いたり)をする場合はファイル名でなくファイルハンドルを使うとだけ覚えておけば大丈夫です。
次の「C:¥User¥foo¥Desktop¥cmd.txt」はファイル名です。ファイル名の後ろの「0」はファイルポインタを意味します。
ファイルポインタというのは簡単に言うとファイルを読み書きする位置です。今回はファイルを先頭から読むので0としています。逆にファイルの末尾にファイルポインタを指定したい場合は1とします。
ファイルの終わりまで1行ずつ読み込む
ファイルを1行ずつ読み込んで、読み込んだ内容をメッセージボックスで表示するには次のようにします。
:freadloop
filereadln fh buf
if result then
goto breakloop
endif
messagebox buf buf
goto freadloop
:breakloop
1行目の「:freadloop」はラベルで、行の先頭に「:(コロン)」をつけるとラベルとして認識されます。ラベルはしおりの様なものだと覚えてください。
2行目でファイルから1行読みます。TTLコマンドはfilereadlnです。filereadlnにはファイルハンドルと読み込んだ内容を入れる変数を引数として渡します。
ファイルハンドルは先ほどfileopenで指定したfhです。読み込んだ内容を入れる変数名はbufとしました。
そして次のif文でresultの値によって分岐しています。resultにはfilereadlnの実行結果が入っていて、「1」であればファイルの末尾に到達したことを示し、ファイルの末尾に達していない場合はresultが「0」になります。
このif文ではresultの値が「0」でなければgotoで「breakloop」ジャンプします。
resultの値が「0」であればmessegeboxを実行してメッセージボックスを表示し、gotoで「readloop」にジャンプします。
sshでログインしてコマンドを送信する
少し実用的に、sshでログインした後にファイルからコマンドを読み込んで送信してみましょう。
connect '192.168.0.1 /ssh /auth=password /user=foo /passwd=MyPassword'
wait '$'
fileopen fh 'C:\Users\foo\Desktop\cmd.txt' 0
:freadloop
filereadln fh buf
if result then
goto breakloop
endif
pause 1
sendln buf
wait '$'
goto freadloop
:breakloop
fileclose fh
このマクロを実行するとファイルから読み込んだ内容をsendlnで送信します。
ファイルの末尾に到達すると「breakloop」にジャンプして、最後にfilecloseで最初に開いたファイルを閉じてマクロは終了します。
この続きはありません。
しかし、100円で購入していただくと、こんなメリットがあります。
あなたの「ライブラリ」に記事が保存されるので、いつでも読み返せます。
この記事が削除されても後で読み返すことができます。
この記事にコメントすることができます。記事に不明点や質問があればコメントしてください。
続きをみるには
¥ 100
この記事が気に入ったらサポートをしてみませんか?