Tera Termマクロを実行する方法は3つあります。
- マクロファイルをダブルクリックして実行する。
- Tera Termの[コントロール]-[マクロ]からマクロを実行する。
- コマンドラインからttpmacro.exeを実行し、引数にマクロファイルを指定してマクロを実行する。
今回は3番目のコマンドラインからttpmacor.exeを実行する方法について紹介し、その後バッチファイルにコマンドを記載して実行する方法について紹介します。
Tera Termマクロをバッチファイルから実行する方法は、パラメータを動的に指定できるため実行時の自由度が増します。そのため、バッチファイルからTera Termを実行する方法を覚えておくと便利です。
コマンドラインからttpmacro.exeを呼び出す方法
コマンドラインからTera Termマクロを実行するためには、コマンドプロンプトからttpmacro.exeを呼び出します。64版WindowsにTera Termをデフォルトインストールしているのならば、次のようにします。
“%ProgramFiles(x86)%\teraterm\ttpmacro.exe” <ファイル名> [引数]
ファイル名をフルパスで書かない場合はttpmacro.exeと同じフォルダ内のファイルと見なされるので、デスクトップにTera Termマクロを置く場合は「%HOMEPATH%\Desktop¥Desktop¥ファイル名」のようにファイル名をフルパスで指定してください。
Tera Termマクロへ引数を渡す方法
Tera Term 4.91まで
Tera Term 4.91までは、ttpmacro.exeへの引数を9個指定できます。最初のひとつは実行したいTera Termマクロファイル名、残りはTera Termマクロへ渡す引数です。Tera Termマクロが実行されると、param1にはttpmacro.exeから呼び出したTera Termマクロのファイル名が格納され、システム変数param2~param9へ残りの引数が格納されます。引数の数はシステム変数paramcntへ格納されます。
Tera Term 4.92以降
Tera Term 4.92からは、paramに加えてparams配列が使えるようになりました。params配列では、params[0]にコマンドライン文字列全体が格納され、params[1] にはマクロファイル名が格納されます。残りの引数はparams[2]以降に格納されます。params[10]以降も使えるので、これまでのように引数が9個まで、という制限がなくなりました。引数の数はシステム変数paramcntへ格納されます。params[0]は含まれないので、paramcntの値はTera Term4.92でも以前と変わりません。
引数の文字列は、Tera Termのバージョンに関係なく最長511文字まで格納されます。
オプション
オプションは「/I」と「/V」を使う事ができます。「/I」はマクロウィンドウをアイコン化し、「/V」はマクロウィンドウを非表示にするので、タスクバーにも表示されません。
バッチファイルからTera Termマクロを実行する
実際の現場ではコマンドラインからttpmacro.exeを呼び出してTera Termマクロを実行する機会は皆無でしょう。バッチファイルやPowerShellからTera Termマクロを実行する方が現実的です。
バッチファイルからTera Termマクロを実行する方法はコマンドラインから実行する方法と違いありません。例としてCSVファイルからレコードを取得してパラメータをTera Termに渡す方法を紹介します。
CSVファイルの内容は次のようなものにします。各フィールドをカンマで区切ります。
接続先ホスト,ユーザー名,パスワード
このCSVファイルを読み込んで処理するバッチファイルは次のようにします。変数csvfileとmacroは適宜修正してください。
@echo off set csvfile=CSVファイル名 set macro=%HOMEPATH%¥Desktop¥ファイル名 rem フィールド数の設定 set tokens=1,2,3 rem CSVファイル内の行頭に#がある場合はコメントとみなされて無視される for /F "usebackq eol=# tokens=%tokens% delims=," %%a in (%csvfile%) do ( "%ProgramFiles(x86)%¥teraterm¥ttpmacro.exe" "%macro%" %%a %%b %%c )
%%aには接続先ホスト、%%bにはユーザー名、%%cにはパスワードが格納されます。このように接続先機器ごとに異なる可能性がある情報を動的にパラメータとして渡す方法を採用すると、汎用性の高いマクロを書くことができます。
このバッチファイルから実行されたTera Termマクロでは、システム変数param1に実行しているTera Termファイル名、param2に接続先ホスト、param3にユーザー名、param4にパスワードが格納され、システム変数paramcntには引数の数である4が格納されます。
Tera Term 4.92では、システム変数params[1]に実行しているTera Termファイル名、params[2]に接続先ホスト、params[3]にユーザー名、params[4]にパスワードが格納され、システム変数paramcntには引数の数である4が格納されます。