TeraTerm マクロの作り方
ttl ファイルを保存する方法
さて、マクロ自体の基本的な使い方*1を書いたので、今度は作り方を書く前に、保存の方法を。
TeraTerm マクロは、テキストエディタで編集するテキストファイル。
ファイル保存時に .txt ではなく *.* を選択して、最後に .ttl を追記するだけ。
要は、拡張子が .ttl なだけ。
実行させたいコマンドを、実行させたい順番で、実行させたいタイミングで記述する。
さすがに Windows の使い方から分からない…という人が、TeraTerm を使うとは思えないので、詳細な保存方法は割愛しちゃう。
これを、メニューからとか、起動時とか、TeraTerm に読み込ませれば実行される。
テキストエディタ
では、作り方。
作りたいと思うからには、なにか欲しい機能があるはず。
それらを推しはかれる訳もないので、今回はありがちなサンプルとしてログの自動的取得でも。
TeraTerm に限らず、ログを取るときは 開く という。
これは、ファイルを開いて文字列を入れ込む…というイメージを持つと理解しやすいはず。
最初は Windows 付属のメモ帳で十分だと思う。
sendln 'echo hello world'
これだけを書いててきとーな名前で保存し、ログイン済みの TeraTerm ウィンドウでマクロとして実行してみると理解しやすいと思う。
参考となる資料
それから、TeraTerm のヘルプファイルは開いておこう。
デフォルトインストールなら、C:\Program Files\teraterm\teratermj.chm があるはず。
こんなページより、よほど親切な記述方法で MACRO ヘルプが記載されてたりする。
TeraTerm から開くなら、メニューの「ヘルプ(H)」から「目次(I)」を選択する。
でも、TeraTerm を閉じると一緒にヘルプも閉じちゃうので、マクロ作成だけが目的なら、直接ヘルプファイルを起動しておいたほうがいいよね。
ヘルプファイルでよく使うのは、TTL コマンドリファレンスだろう。
どんな命令文があるのか把握しておけば、マクロを組むのなんて積み木を積んでいくのと、そう変わらない。
これを全部覚える必要はないけど、一度は目を通しておく。
似たような機能*2もあるけど、微妙に役割が違うので注意。
ここを説明しだすと、長いんよ。
通信コマンド | 備考 |
---|---|
bplusrecv | B-Plus プロトコルでファイルを受信する。 |
bplussend | B-Plus プロトコルでファイルを送信する。 |
callmenu | 4.56以降 - ウインドウのメニューを実行する。 |
changedir | Tera Term の現在のディレクトリを変更する。 |
clearscreen | ウインドウの画面を消去する。 |
closett | Tera Term を終了させる。 |
connect | 接続する。 |
cygconnect | 4.57以降 - Cygwinへ接続する。 |
disconnect | Tera Term とホストの間の通信を終了させる。 |
dispstr | 4.67以降 - 文字を端末画面に出力する。 |
enablekeyb | Tera Term のキーボード入力を許可/禁止する。 |
flushrecv | MACRO の受信バッファーの内容を消す。 |
gethostname | 4.61以降 - 接続先のホスト名(IPアドレス)を得る。 |
gettitle | ウインドウタイトル文字列を得る。 |
kmtfinish | Kermit Finish コマンドを実行する。 |
kmtget | ファイルを Kermit Get コマンドで受信する。 |
kmtrecv | Kermit プロトコルでファイルを受信する。 |
kmtsend | ファイルをKermit プロトコルで送信する。 |
loadkeymap | キーボード設定ファイルを読み込む。 |
logclose | Tera Term のログを終了する。 |
loginfo | 4.73以降 - Tera Term のログ取得状態を得る |
logopen | Tera Term のログを開始する。 |
logpause | Tera Term のログを一時中断する。 |
logstart | 中断していた Tera Term のログを再開する。 |
logwrite | 文字列をログに書き込む。>文字列をログに書き込む。 |
quickvanrecv | Quick-VAN プロトコルでファイルを受信する。 |
quickvansend | Quick-VAN プロトコルでファイルを送信する。 |
recvln | 一行分の文字を受信する。 |
restoresetup | 設定ファイルを読み込む。 |
scprecv | 4.57以降 - SCPプロトコルでファイルを受信する。 |
scpsend | 4.57以降 - SCPプロトコルでファイルを送信する。 |
send | データを送信する。 |
sendbreak | ブレーク信号をホストへ送出する。 |
sendbroadcast | 4.62以降 - データをブロードキャスト送信する。 |
sendfile | ファイルを送信する。 |
sendkcode | キーコードを送信する。 |
sendln | データと改行を送信する。 |
sendlnbroadcast | 4.62以降 - データをブロードキャスト送信する。 |
sendmulticast | 4.62以降 - データをマルチキャスト送信する。 |
setbaud | 4.58以降 - シリアルポートのボーレートを変更する。 |
setdebug | 4.64以降 - デバッグモードを設定する。 |
setdtr | 4.59以降 - Tera Term で DTR の状態を変更する。 |
setecho | Tera Term のローカルエコー (local echo) の状態を変更する。 |
setmulticastname | 4.62以降 - マルチキャスト送信のための端末識別名を設定する。 |
setrts | 4.59以降 - Tera Term で RTS の状態を変更する。 |
setsync | 同期モードを設定する。 |
settitle | ウインドウタイトル文字列を変更する。 |
showtt | Tera Term ウインドウの表示状態を変更する。 |
testlink | 現在のリンクおよび接続の状態を報告する。 |
unlink | 現在の Tera Term ウインドウと MACRO の間のリンクを断つ。 |
wait | 文字列を待つ。 |
wait4all | 4.63以降 - マクロに接続されている全端末の文字列を待つ。 |
waitevent | イベントを待つ。 |
waitln | 文字列を含む行を待つ。 |
waitn | 4.62以降 - 指定されたバイト数の受信を待つ。 |
waitrecv | 文字列を待つ。 |
waitregex | 4.21以降 - 正規表現文字列を含む行を待つ。 |
xmodemrecv | XMODEM プロトコルでファイルを受信する。 |
xmodemsend | XMODEM プロトコルでファイルを送信する。 |
ymodemrecv | 4.66以降 - YMODEM プロトコルでファイルを受信する。 |
ymodemsend | 4.66以降 - YMODEM プロトコルでファイルを送信する。 |
zmodemrecv | ZMODEM プロトコルでファイルを受信する。 |
zmodemsend | ZMODEM プロトコルでファイルを送信する。 |
制御コマンド | 依存するバージョン |
break | 4.53以降 - ループから抜ける。 |
call | サブルーチンをコールする。 |
do,loop | 4.56以降 - 繰り返す。 |
end | マクロの実行そのものを終了する。 |
execcmnd | TTL コマンド を実行する。 |
exit | メインファイルへ戻る。 |
for,next | 繰り返す。 |
goto | ラベルへジャンプする。 |
if,then,elseif,else,endif | 条件分岐 |
include | インクルードファイルに移る。 |
mpause | 4.27以降 - 休止する。 |
pause | 休止する。 |
return | サブルーチンを抜け、メインルーチンへ戻る。 |
until,enduntil | 4.56以降 - 繰り返す。 |
while,endwhile | 繰り返す。 |
文字列操作コマンド | 依存するバージョン |
code2str | ASCII コード値を文字列に変換する。 |
expandenv | 4.71以降 - 環境変数文字列を展開する。 |
int2str | 整数値を文字列に変換する。 |
sprintf | 4.52以降 - フォーマットされた出力を返す。 |
sprintf2 | 4.62以降 - フォーマットされた出力を返す。 |
str2code | 文字列を ASCII コード値に変換する。 |
str2int | 文字列を整数値に変換する。 |
strcompare | 文字列を比較する。 |
strconcat | 文字列を継ぎ足す。 |
strcopy | 文字列をコピーする。 |
strinsert | 4.67以降 - 文字列を挿入する。 |
strjoin | 4.67以降 - 文字を連結する。 |
strlen | 文字列の長さを返す。 |
strmatch | 4.59以降 - 正規表現によるパターンマッチングを行う。 |
strremove | 4.67以降 - 文字列を削除する。 |
strreplace | 4.67以降 - 文字列を置換する。 |
strscan | 部分文字列の位置を返す。 |
strspecial | 4.67以降 - 特殊文字を変換する。 |
strsplit | 4.67以降 - 文字列を分割する。 |
strtrim | 4.67以降 - 前後の文字を削除する。 |
tolower | 4.53以降 - 文字列をすべて小文字に変換する。 |
toupper | 4.53以降 - 文字列をすべて大文字に変換する。 |
ファイル操作コマンド | 依存するバージョン |
basename | 4.69以降 - パス名からファイル名を得る。 |
dirname | 4.69以降 - パス名からディレクトリ名を得る。 |
fileclose | ファイルハンドルを閉じる。 |
fileconcat | ファイルの内容を別のファイルに追加する。 |
filecopy | ファイルをコピーする。 |
filecreate | ファイルを作成する。 |
filedelete | ファイルを削除する。 |
filelock | 4.74以降 - 開いているファイルをロックする。 |
filemarkptr | ファイルポインタを保存する。 |
fileopen | ファイルを開く。 |
filereadln | ファイルから一行読む。 |
fileread | 4.48以降 - ファイルを読む。 |
filerename | ファイル名を変更する。 |
filesearch | ファイルまたはフォルダがあるか確かめる。 |
fileseek | ファイルポインタを移動する。 |
fileseekback | "filemarkptr" コマンドで保存した位置にファイルポインタを移動する。 |
filestat | 4.66以降 - ファイルの統計情報を取得する。 |
filestrseek | 文字列をファイルの先頭から末尾に向かって検索する。 |
filestrseek2 | 文字列をファイルの末尾から先頭へ向かって検索する。 |
filetruncate | 4.67以降 - ファイルのサイズを変更する。 |
fileunlock | 4.74以降 - 開いているファイルのロックを解除する。 |
filewrite | ファイルに文字列を書き込む。 |
filewriteln | ファイルに文字列を改行付きで書き込む。 |
findfirst,findnext,findclose | 文字列に合致する最初のファイルを探す。 |
foldercreate | 4.69以降 - フォルダを作成する。 |
folderdelete | 4.69以降 - フォルダを削除する。 |
foldersearch | 4.69以降 - フォルダがあるか確かめる。 |
getdir | MACRO の現在のディレクトリを得る。 |
getfileattr | 4.69以降 - ファイルまたはディレクトリの属性を得る。 |
makepath | フルパス名を作成する。 |
setdir | MACRO の現在のディレクトリを変更する。 |
setfileattr | 4.69以降 - ファイルまたはディレクトリの属性を変更する。 |
パスワードコマンド | 依存するバージョン |
delpassword | パスワードを削除する。 |
getpassword | パスワードを読み出す。 |
passwordbox | パスワードを入力するためのダイアログボックスを開く。 |
その他のコマンド | 依存するバージョン |
beep | ビープ音を鳴らす。 |
closesbox | statusbox コマンドによって開かれたステータスダイアログボックスを閉じる。 |
clipb2var | 4.46以降 - クリップボードのテキストデータをコピーする。 |
crc32 | 4.60以降 - CRC-32を計算する。 |
crc32file | 4.60以降 - CRC-32を計算する。 |
exec | アプリケーションを起動する。 |
filenamebox | 4.54以降 - ファイル名を選択するダイアログボックスを開く。 |
getdate | 現在の日付を得る。 |
getenv | 環境変数を得る。 |
getspecialfolder | 4.72以降 - 特殊フォルダのパスを取得する。 |
gettime | 現在の時刻を得る。 |
getttdir | 4.60以降 - ttpmacro.exe があるディレクトリを得る。 |
getver | 4.58以降 - Tera Termのバージョンを取得する。 |
ifdefined | 4.46以降 - 型を調べる。 |
inputbox | 文字列を入力するためのダイアログボックスを開く。 |
intdim | 4.72以降 - 整数配列型の変数を宣言する。 |
messagebox | ダイアログボックスを開き、ユーザーにメッセージを知らせる。 |
random | 4.27以降 - 乱数を生成する。 |
rotateleft | 4.54以降 - 左にローテート(循環シフト)する。 |
rotateright | 4.54以降 - 右にローテート(循環シフト)する。 |
setdate | システムの日付を変更する。 |
setdlgpos | ダイアログボックスの位置を設定する。 |
setenv | 4.54以降 - MACRO の終了コードを設定する。 |
setexitcode | 環境変数を変更する。 |
settime | システムの時刻を変更する。 |
show | MACRO ダイアログの表示状態を変更する。 |
statusbox | ステータスダイアログボックスを表示する。 |
strdim | 4.72以降 - 文字列配列型の変数を宣言する。 |
var2clipb | 4.46以降 - テキストデータをクリップボードにコピーする。 |
yesnobox | ダイアログボックスを開き、ユーザーに「はい」/「いいえ」を選択させる。 |
手元にインストールしてた Ver 4.74 で実装されているコマンドは、こんな感じ。
つか、増えてら… 知らないコマンドがある…。
とりあえず、簡単なマクロから。
TeraTerm で、コマンドを実行させたいとき。
上記のコマンド群をみると、sendln を使えばいいことが分かる*3。
なので、テキストファイルに、こう書く。
sendln 'echo hello world!'
これを書いて、保存したら適当なサーバでマクロを読み込んでみる。
TeraTerm 上で、コマンドが実行されているはず。
次に、ログファイルを自動で開いてくれるマクロにする。
上記コマンドを読むに、logopen を使えばヨサゲだとわかる。
ここは横着して、TeraTerm ヘルプから引用しちゃう。
; 日時を取得
gettime timestr "%Y%m%d-%H%M%S"; ログファイル名に日時とユーザ名を入れる。
sprintf2 filename 'autolog-%s.log' timestrlogopen filename 0 0
これで、TeraTerm がインストールされているフォルダに、自動でログが開く。
この場合、TeraTerm を閉じれば、ログも閉じる。
そのまま実行したら c:\autolog-YYYYMMDD-hhmmss.log ができているはず。
できていなかったら、エラー処理を組んで原因調査…になるんだけど、そこは割愛。
注意点としては、サーバに接続されている状態じゃないとログを開けないことかな。
ttl ファイルを開く方法
そのままダブルクリックで開くと、TeraTerm に関連付けされているので編集できない。
テキストエディタから該当ファイルを開くか、ドラッグ&ドロップするか、コンテキストメニューを出してエディタに送るか…
何回も書くけど、テキストファイルなのでテキストエディタを使えば良い。