見出し画像

Tera Termマクロをバッチファイルから実行する方法


Tera Termマクロを実行する方法は3つあります。

  1. マクロファイルをダブルクリックして実行する。

  2. Tera Termの[コントロール]-[マクロ]からマクロを実行する。

  3. コマンドラインからttpmacro.exeを実行し、引数にマクロファイルを指定してマクロを実行する。

今回は3番目の「コマンドラインからttpmacro.exeを実行」する方法について解説し、その後バッチファイルにコマンドを記載して実行する方法について解説します。

Tera Termマクロをバッチファイルから実行する方法はパラメータを動的に指定できるため実行時の自由度が増します。そのため、バッチファイルからTera Termを実行する方法を覚えておくと便利です。

コマンドラインからttpmacro.exeを呼び出す方法

コマンドラインからTera Termマクロを実行するためにはコマンドプロンプトからttpmacro.exeを呼び出します。

64版Windowsにv5系Tera Termをデフォルトインストールしているのならば、次のようにします。

 "C:\Program Files (x86)\teraterm5\ttpmacro.exe" マクロ.ttl [引数]  

「マクロ.ttl」をフルパスで指定しない場合はttpmacro.exeと同じフォルダ内のファイルと見なされるので、デスクトップにTera Termマクロを置く場合は「%HOMEPATH%\Desktop\マクロ.ttl」のようにファイル名をフルパスで指定してください。

Tera Termマクロへ引数を渡す方法

Tera Term 4.91まで(古い方法)

Tera Term 4.91まではttpmacro.exeへの引数を9個指定できます。最初のひとつは実行したいTera Termマクロファイル名、残りはTera Termマクロへ渡す引数です。

Tera Termマクロが実行されるとparam1にはttpmacro.exeから呼び出したTera Termマクロのファイル名が格納され、システム変数param2param9へ残りの引数が格納されます。

引数の数はシステム変数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文字まで格納されます。

次のようなマクロを用意して実際に試してみてください。

for i 0 paramcnt
    messagebox params[i] i
next

このマクロをデスクトップに「param.ttl」というファイル名で保存し、コマンドラインから次のコマンドを実行するとどのように表示されるでしょうか。

"C:\Program Files (x86)"\teraterm5\ttpmacro.exe %HOMEPATH%\Desktop\param.ttl 1 2 3

オプション

オプションは「/I」と「/V」を使う事ができます。「/I」はマクロウィンドウをアイコン化し、「/V」はマクロウィンドウを非表示にするので、タスクバーにも表示されません。

バッチファイルからTera Termマクロを実行する

ネットワークエンジニアの現場ではコマンドラインからttpmacro.exeを呼び出してTera Termマクロを実行する機会は皆無でしょう。

バッチファイルやPowerShellからTera Termマクロを実行する方が現実的です。

バッチファイルからTera Termマクロを実行する方法はコマンドラインから実行する方法と違いありません。例としてCSVファイルからレコードを取得してパラメータをTera Termに渡す方法を紹介します。

CSVファイルの内容は次のような内容にします。

#接続先ホスト,ユーザー名,パスワード
192.168.0.1,foo,mypassword
192.168.0.2,foo,mypassword
192.168.0.3,foo,mypassword

このCSVファイルを読み込んで処理するバッチファイルは次のようにします。先ほど作成した「param.ttl」を実行して正常にパラメーターを渡すことができているか確認しましょう。

CSVファイルとマクロファイルはデスクトップに保存しています。バッチファイルはどこに保存しても構いません。バッチファイルは文字コードをShift-JISに設定し、改行はCR+LFで保存してください。

@echo off

set csvfile=%HOMEPATH%\Desktop\target.csv
set macro=%HOMEPATH%\Desktop\param.ttl

rem CSVファイル内の行頭に#がある場合はコメントとみなされて無視される
for /F "usebackq eol=# tokens=1-3 delims=," %%a in (%csvfile%) do (
    "C:\Program Files (x86)\teraterm5\ttpmacro.exe" %HOMEPATH%\Desktop\param.ttl %%a %%b %%c
)

このバッチファイルを実行し、CSVファイルで設定した各フィールドが正しくTera Termマクロに渡されているか確認してください。

この記事が気に入ったらサポートをしてみませんか?