Tera Termの最新バージョンは4.106です

Tera Termマクロの終了コードを設定する方法

TeraTermマクロファイルをダブルクリックして使用する場合は、何かエラーがあった場合にmessageboxでエラーを通知して終了させるとエラー原因が判って良いでしょう。しかし、バッチファイルで大量のTeraTermマクロを処理したり、タスクで自動実行させる場合はmessageboxを使用すると処理が止まってしまいます。そんな時は、エラーが発生した際に終了コードを設定して、TeraTermマクロが正常終了したのか否か、エラー原因が何なのか通知するとより便利になります。

終了コードの設定方法

TTLコマンドのsetexitcodeを使用すると、TeraTermマクロの終了コードを設定する事ができます。setexitcodeは次のように使用します。

setexitcode <終了コード>

TeraTermマクロで設定した終了コードを取得するためには、ttpmacro.exeを次のようにして実行します。

Windows NT/2000/XPの場合

ttpmacro test.ttl

Windows 98/MEの場合(/w オプションが必要)

start /w ttpmacro test.ttl

TeraTermマクロで設定した終了コードを取得するためには、変数errorlevelを参照します。エラーが発生した場合は終了コードを 1 、正常に終了した場合を0にするとした場合、次のように書くことができます。

ttpmacro test.ttl

if %errorlevel% == 0 echo 正常終了
if %errorlevel% == 1 echo エラー発生

エラーの原因まで判るようにする

単に正常終了したのか否かだけでは、後から見たら原因が判らず不便です。そこで、エラーが発生した原因ごとに終了コードを決めておくと良いでしょう。たとえば次のように書くのはどうでしょうか。

EXIT_SUCCESS = 0 ; 正常終了
ERRCONNECT = 1 ; connectでエラー
ERRLOGOPEN = 2 ; logopenでエラー
ERRFILEOPEN = 3 ; fileopenでエラー
ERRTIMEOUT = 4 ; タイムアウトが発生

connect 'host'
testlink
if result != 2 then
    setexitcode ERRCONNECT
    end
endif

timeout = 10
wait 'login:' 'password:' 'router>'
if result == 0 then
    setexitcode ERRTIMEOUT
    end
endif

fileopen fhandle 'file.txt' 1
if result == -1 then
    setexitcode ERRFILEOPEN
    end
endif

logopen 'logfile.txt' 0 0
if result != 0 then
    setexitcode ERRLOGOPEN
    end
endif

setexitcode EXIT_SUCCESS

このTeraTermマクロを次のようにして実行します。 

set macro=test.ttl
set logfile=log.txt

ttpmacro %macro%
echo %macro% [%errorlevel%] >> %logfile%

ログファイルに実行したTeraTermマクロファイル名と終了コードを記録します。このようにすると、後でログファイルを見れば結果がひと目で判ります。もしもホスト名を引数にしてTeraTermマクロを実行しているのであれば、ホスト名をログファイルに記録した方が良いでしょう。この方法は大量のTeraTermマクロを一気に実行するとき、威力を発揮します。是非、活用してみてください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)