TTMACRO for Tera Term T. Teranishi Copyright (C) 1994-1996 T. Teranishi All Rights Reserved. ------------------------------------------------------------------------------- 目次 1. 概要 2. インストール 3. マクロ実行法 4. マクロ言語 "Tera Term Language (TTL)" 4.1 データ型 4.2 定数の形式 4.3 名前の形式 4.4 変数 4.5 式と演算子 4.6 行の形式 5. TTL コマンドリファレンス 5.1 通信コマンド 5.2 制御コマンド 5.3 文字列操作コマンド 5.4 ファイル操作コマンド 5.5 その他のコマンド 6. 補足説明 エラーメッセージ 改行文字について ------------------------------------------------------------------------------- 1. 概要 TTMACRO は Tera Term 用マクロ実行プログラムです。マクロ言語 "Tera Term Language (TTL)" によって、 Tera Term を制御し、オートダイアル、 オートログインなどの機能を実現することができます。 注: TTMACRO.EXE は 16-bit 実行ファイルです。長いマクロファイル名には対応 していません。 ------------------------------------------------------------------------------- 2. インストール TTMACRO.EXE を TERA TERM がインストールされているディレクトリ(フォルダ) に置いてください。 ------------------------------------------------------------------------------- 3. マクロ実行法 マクロファイルを実行するには、2通りの方法があります。 1) Tera Term からマクロを実行する。 Tera Term の [Control] Macro コマンドを実行してください。すると、 TTMACRO が起動し、マクロファイル (*.TTL) を選択するダイアログボックスが現れるので、 実行したいマクロファイルを選択してください。 2) TTMACRO を直接起動し、マクロを実行する。 (Tera Term はマクロから起動。) TTMACRO を起動するときのコマンドライン(ショートカットのリンク先)で マクロファイル名を指定することができます。例えばマクロファイル "DIALUP.TTL" を実行したい場合、コマンドライン(ショートカットのリンク先)は、 TTMACRO DIALUP.TTL と指定してください。マクロファイル名の拡張子 ".TTL" は省略可能です。マクロ ファイル名を省略すると、TTMACRO 起動後にマクロファイルを選択するダイアログ ボックスが現れます。よく使用するマクロは、アイコン(ショートカット)を作成 しておくと便利です。 方法 2) で、TTMACRO を起動した場合、マクロコマンド connect によって、 Tera Term を起動することができます。 Connect コマンドの説明は 5.1.5 を読んで ください。 マクロ実行中は、「TTMACRO - <マクロファイル名>」というアイコンまたはダイアログ ボックスがあらわれます。ダイアログボックスの「Pause」/「Start」/「End]ボタンを 押すとマクロを停止/再開/終了することができます。 ------------------------------------------------------------------------------- 4. マクロ言語 "Tera Term Language (TTL)" TTL は BASIC に似た単純なインタープリタ型の言語です。 はやく覚えるには、配布パッケージに含まれるマクロファイルのサンプルを参考に し、「5. TTL コマンドリファレンス」を読んで下さい。 ............................................................................... 4.1 データ型 TTL が扱えるデータの型は2種類。 整数 符号付き 16 bit, -32768から32767まで。 文字列 NUL 文字を除くすべての文字を含むことができる。 最大長は255文字。 ............................................................................... 4.2 定数の形式 1) 整数型定数 10進数で表現する。 例: 123 -11 2) 文字列型定数 文字列型定数を表現する方法は2つ。 a) 値となる文字列の両端を ' か " で囲む(両端とも同じ文字で)。 文字列値を構成する文字は表示可能で囲み文字と異なる文字ならば 何でもよい。 例: 'Hello, world!' "I can't do that." "漢字も可能" b) 1文字を ASCII (または JIS ローマ字、Shift-JIS) コード(10進数) で表現し、先頭に "$" をつける。ASCII コード 0 の文字 (NUL) は 文字列定数に含めることができない。 例: #65 文字 "A" #13 CR 文字 a) と b) は組み合わせることが可能。 例: 'cat readme.txt'#13#10 普通の文字列+改行 abc'#13#10'def'#13#10'ghi' ............................................................................... 4.3 名前の形式 1) 変数の名前 1文字目は、アルファベット (A-Z, a-z) か "_"、2文字目以降はアルファベットか "_" か数字 (0-9)。アルファベットの大文字と小文字は区別されない。最大長は32文字。 例: send VARIABLE1 _flag 2) ラベルの名前 アルファベット (A-Z, a-z) か "_" か数字 (0-9) で構成される。最大長は32文字。 例: label1 100 3) 予約語 以下に示す名前は、コマンドや演算子、システム変数として使われる。ユーザーが 定義する変数やラベルの名前として使うことはできない。 コマンド: beep, bplusrecv, bplussend, ... (5. のコマンドリストを参照) 演算子: and, not, or, xor システム変数: inputstr, param2, param3, result, timeout ............................................................................... 4.4 変数 1) ユーザー変数 ユーザーにより定義される。型および値は初めて値が代入されたときに決まる。 いったん型が決まると違う型の値を代入することはできない。 2) システム変数 あらかじめ型と値が定義され、特定のコマンドと共に使用される。 名前 型 初期値 システム変数を使用するコマンド ----------------------------------------------------------------- inputstr 文字列 "" inputbox, passwordbox, waitrecv param2 文字列 *1 *1 param3 文字列 *1 *1 result 整数 0 filereadln, filesearch, filestrseek, str2int, strcompare, strlen, strscan, wait, waitrecv, yesnobox timeout 整数 0 wait, waitrecv *1 TTMACRO 起動時のコマンドラインパラメータの2, 3番目が システム変数 param2, param3 の初期値となる。1番目の文字列は マクロファイル名。 ............................................................................... 4.5 式と演算子 式は、定数、変数、演算子、カッコで表現する。定数と変数は整数型のみ。結果も 整数型。関係演算子を用いた式の結果の値は、真のとき1、偽のとき0となる。 演算子の優先順位による分類は以下のとおり 種類 優先順位 演算子 ------------------------------------------------------------ 単項演算子 1, 最高 not 乗除演算子 2 * / 加減演算子 3 + - or xor 関係演算子 4, 最低 = <> < > <= >= 例: 1 + 1 4 - 2 * 3 この式の値は-2 3 * (A + 2) Aは整数型の変数 A and not B A <= B A, Bは整数型の変数。結果の値は真のとき1、偽のとき0 ............................................................................... 4.6 行の形式 行の形式は以下の5つに分類できる。 1) 空白行 文字がない行や空白文字 (space または tab) だけの行は無視され、TTL の実行 結果に影響をあたえない。 2) コメント行 ";" で始まる行。TTL の実行結果に影響を与えない。 例: ; Tera Term Language 3) コマンド行 1つのコマンド名と0個以上のパラメータ。(if コマンドは例外。5.2.7 参照)。 形式: <コマンド> <パラメータ> ... 例: connect'myhost' wait 'OK' 'ERROR' if result=2 goto error sendln 'cat' pause A*10 end 4) 代入行 変数に値を代入する。 形式: <変数> = <定数、変数、式> 例: A = 33 数値の代入 B = C C はすでに値が代入されてなければならない。 VAL = I*(I+1) A=B=C B=C の結果 (真:1、偽:0) がAに代入される。 Error=0 例: :dial :300 ------------------------------------------------------------------------------- 5. TTL コマンドリファレンス コマンドの分類 5.1 通信コマンド 5.1.1 bplusrecv 5.1.2 bplussend 5.1.3 changedir 5.1.4 closett 5.1.5 connect 5.1.6 kmtrecv 5.1.7 kmtsend 5.1.8 logclose 5.1.9 logopen 5.1.10 logpause 5.1.11 logstart 5.1.12 logwrite 5.1.13 quickvanrecv 5.1.14 quickvansend 5.1.15 send 5.1.16 sendfile 5.1.17 sendln 5.1.18 showtt 5.1.19 wait 5.1.20 waitrecv 5.1.21 xmodemrecv 5.1.22 xmodemsend 5.1.23 zmodemrecv 5.1.24 zmodemsend 5.2 制御コマンド 5.2.1 call 5.2.2 end 5.2.3 execcmnd 5.2.4 exit 5.2.5 for, next 5.2.6 goto 5.2.7 if, then, elseif, else, endif 5.2.8 include 5.2.9 pause 5.2.10 return 5.2.11 while, endwhile 5.3 文字列操作コマンド 5.3.1 str2int 5.3.2 strcompare 5.3.3 strconcat 5.3.4 strcopy 5.3.5 strlen 5.3.6 strscan 5.4 ファイル操作コマンド 5.4.1 fileclose 5.4.2 fileconcat 5.4.3 filecopy 5.4.4 filecreate 5.4.5 filedelete 5.4.6 fileopen 5.4.7 filereadln 5.4.8 filerename 5.4.9 filesearch 5.4.10 fileseek 5.4.11 filestrseek 5.4.12 filewrite 5.4.13 filewriteln 5.5 その他のコマンド 5.5.1 beep 5.5.2 exec 5.5.3 getdate 5.5.4 gettime 5.5.5 inputbox 5.5.6 int2str 5.5.7 messagebox 5.5.8 passwordbox 5.5.9 show 5.5.10 yesnobox ............................................................................... 5.1 通信コマンド - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5.1.1 bplusrecv 形式: bplusrecv B-Plus プロトコルでファイルを受信する。 受信が終わるまで次のコマンドは実行されない。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5.1.2 bplussend 形式: bplussend ファイル を B-Plus プロトコルで送信する。 送信が終わるまで次のコマンドは実行されない。 例: bplussend 'readme.txt' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5.1.3 changedir 形式: changedir Tera Term の現在のディレクトリを変更する。 例: changedir 'c:\' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5.1.4 closett 形式: closett Tera Term を終了させる。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5.1.5 connect 形式: connect Tera Term を起動して TTMACRO と接続する。 は、 Tera Term を起動する時のコマンドラインパラメータ。Tera Term から TTMACRO を起動したり、すでに他の connect コマンドが実行されている場合、このコマンド は無視される。Tera Term との接続が確立する前に、他の通信コマンドは実行でき ない。 Tera Termのコマンドラインパラメータについては、配布パッケージの CMNDLINE.TXT を参照。 例: connect '' パラメータなしで Tera Term を起動 connect '/C=2' パラメータ '/C=2'をつけて Tera Term を起動 connect 'foohost.foo.foo.jp' CommandLine = '111.111.11.11' connect CommandLine - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5.1.6 kmtrecv 形式: kmtrecv Kermit プロトコルでファイルを受信する。 受信が終わるまで次のコマンドは実行されない。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5.1.7 kmtsend 形式: kmtsend ファイル を Kermit プロトコルで送信する。 送信が終わるまで次のコマンドは実行されない。 例: kmtsend 'readme.txt' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5.1.8 logclose 形式: logclose Tera Term のログを終了する。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5.1.9 logopen 形式: logopen Tera Term のログを開始する。ファイル に受信した文字が 書き込まれる。ログを開始したあとも次のコマンドは実行される。 の値が0のとき、受信した漢字、改行文字は変換されてファイルに 書き込まれ、エスケープシーケンスは書き込まれない。 の値が0以外 のとき、受信した文字をすべてそのままファイルに書き込む。 の値が0以外で、ファイル がすでに存在する場合、 そのファイルに追加して書き込む。 の値が0で、ファイル がすでに存在する場合、 そのファイルは上書きされる。 例: logopen 'myhost.log' 0 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5.1.10 logpause 形式: logpause Tera Term のログを一時中断する。中断してる間に受信された文字はログファイル に書き込まれない。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5.1.11 logstart 形式: logstart 中断していた Tera Term のログを再開する。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5.1.12 logwrite 形式: logwrite 文字列 を Tera Term のログファイルに追加して書き込む。 このコマンドは Tera Term がログを取っている時だけ有効。ログを一時中断 している時でも書き込むことができる。 例: logwrite 'LOG FILE'#13#10 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5.1.13 quickvanrecv 形式: quickvanrecv Quick-VAN プロトコルでファイルを受信する。 受信が終わるまで次のコマンドは実行されない。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5.1.14 quickvansend 形式: quickvansend ファイル を Quick-VAN プロトコルで送信する。 送信が終わるまで次のコマンドは実行されない。 例: quickvansend 'readme.txt' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5.1.15 send 形式: send .... が文字列型の場合、文字列をホストへ送信させる。 が整数型の場合は、その値の下位バイト(0-255)を ASCII コードと みなし、その文字を送信させる。 例: send 'ABC' send 65 66 67 'ABC' を送信させる。('A' の ASCII コードは65) myname='Tera Term' send 'My name is ' myname '.' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5.1.16 sendfile 形式: sendfile ファイルを送信する。送信が終わるまで次のコマンドは実行されない。 の値が0以外のとき、ファイルの内容をそのまま送信する。 の値が0のとき、ファイルの中に含まれる漢字、改行文字を変換 して送信する。TAB ($09), LF ($0A), CR ($0D) 以外の制御文字は送信されない。 例: sendfile 'data.dat' 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5.1.17 sendln 形式: sendln .... 文字列とそれに続く改行文字をホストへ送信させる。 の形式は、 "send" コマンド (5.1.15) と同じ。 例: sendln 改行文字だけ送信 sendln 'abc' Password='mypassword' sendln Password - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5.1.18 showtt 形式: showtt が0の場合、 Tera Term を最小化する。 が0以外の場合、 Tera Term を元の大きさに戻す。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5.1.19 wait 形式: wait ... 文字列 がホストから送られてくるか、タイムアウトが起こるまで TTL の実行を休止する。 は最大10個まで指定できる。 システム変数 timeout が0より大きい場合、 秒の時間がすぎると タイムアウトが起こる。 timeout の値が0以下の場合は、タイムアウトは ない。 このコマンドの実行結果はシステム変数 result に格納される。 変数 result の値の意味は、 値 意味 -------------------------------------------- 0 タイムアウト。どの文字列も来なかった。 1 が来た。 2 が来た。 . . . . . . 例: timeout = 30 タイムアウトを30秒に設定。 wait 'OK' 'ERROR' 文字列 'OK か 'ERROR' を待つ。 if result=0 goto timeout タイムアウトなら、:timeout へジャンプ。 if result=1 goto ok 'OK' が来たなら、:ok へジャンプ if result=2 goto error 'ERROR' が来たなら、:error へジャンプ wait #10'>' 'complete.'#13 行先頭の '>' か、行末の 'complete.' を 待つ。(ASCII コード10, 13は LF, CR) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5.1.20 waitrecv 形式: waitrecv ある条件を満たす1つの文字列がホストから送られてくるか、タイムアウトが 起こるまで、TTL の実行を休止する。 その条件とは、文字列の長さが 文字で、 文字列がその 文字目から 始まる副文字列 を含んでいるということ。 例えば、 が "def"、 が9、 が4のとき、 文字列 "abcdefghi" は条件を満たす。 もし条件を満たす文字列が送られてきたら、システム変数 inputstr に保存される。 システム変数 timeout が0より大きい場合、その値の秒数の時間がすぎると タイムアウトが起きる。 timeout の値が0以下の場合は、タイムアウトは ない。 このコマンドの実行結果はシステム変数 result に格納される。 変数 result の値の意味は、 値 意味 ---------------------------------------------------------------------------- -1 文字目から始まる を含む文字列が来て、 inputstr に保存された。しかし文字列の長さは、タイムアウト のために 文字より短い。 0 タイムアウト。条件を満たす文字列は送られてこなかった。 1 条件をみたす文字列が来て、 inputstr に保存された。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5.1.21 xmodemrecv 形式: xmodemrecv