【解決】テラタームマクロをバッチから起動すると「無効なホスト」や文字化けで失敗する原因

ネットワーク

環境

- Windows 11
- Tera Term 5
- バッチファイル(.bat)
- Tera Termマクロ(.ttl)

発生した事象

テラタームマクロ(TTL)をバッチファイルから起動しようとしたところ、「無効なホスト」というエラーが表示されました。

さらに、エラーを解消した後も、今度はテラタームが起動してすぐ閉じてしまうという別の問題が発生しました。

結果として、原因は2つありました。

原因①:「無効なホスト」は ttermpro.exe を起動していたこと

最初は以下のように ttermpro.exe を実行していました。

@echo off

set TTPMACRO=C:\Program Files (x86)\teraterm5\ttermpro.exe
set MACRO2=C:\Users\XXX\OneDrive\デスクトップ\NW\マクロ\RT_connect.ttl

"%TTPMACRO%" "%MACRO2%"

しかし、ttermpro.exe は引数をホスト名として解釈するため、TTLファイルを指定すると「無効なホスト」というエラーになります。

そこで、TTLマクロを実行する ttpmacro.exe に変更しました。

@echo off

set TTPMACRO=C:\Program Files (x86)\teraterm5\ttpmacro.exe
set MACRO2=C:\Users\XXX\OneDrive\デスクトップ\NW\マクロ\RT_connect.ttl

"%TTPMACRO%" "%MACRO2%"

これで「無効なホスト」のエラーは解消されました。

Tera Term本体を起動する ttermpro.exeと、TTLマクロを実行するttpmacro.exeは役割が異なります。
今回はTTLファイルを直接実行したかったため、ttpmacro.exeを使用する必要がありました。

原因②:テラタームがすぐ閉じる原因は文字コードだった

結論バッチファイルをUTF-8で保存していたことが原因でした。

ttpmacro.exe に変更すると「無効なホスト」は表示されなくなりましたが、今度はテラタームが起動してすぐ閉じるようになりました。

コマンドプロンプトから実行すると正常に動作しました。

そこで、バッチファイルに変数を表示する処理を追加して確認しました。

@echo off

set TTPMACRO=C:\Program Files (x86)\teraterm5\ttpmacro.exe
set MACRO2=C:\Users\XXX\OneDrive\デスクトップ\NW\マクロ\RT_connect.ttl

"%TTPMACRO%" "%MACRO2%"

echo "%TTPMACRO%"
echo "%MACRO2%"

pause

すると、TTLファイルのパスに含まれる日本語(「デスクトップ」など)が文字化けしていることが分かりました。

つまり、TTLファイルを見つけられず、マクロが終了していたのでした。

解決方法

私の環境ではバッチファイルをShift_JIS(ANSI)で保存すると、日本語パスも文字化けせず正常に実行できました。

バッチファイルやマクロなど、自動実行するスクリプトでは、パスに日本語を含めないようにすると文字コードによるトラブルを避けやすくなります。

最終的なバッチファイル

@echo off

set TTPMACRO=C:\Program Files (x86)\teraterm5\ttpmacro.exe
set MACRO2=C:\Users\XXX\OneDrive\デスクトップ\NW\マクロ\RT_connect.ttl

"%TTPMACRO%" "%MACRO2%"

まとめ

テラタームマクロをバッチから起動する際は、次の2点を確認しましょう。

  • 「無効なホスト」と表示される場合
    • ttermpro.exe ではなく ttpmacro.exe を使用する。
  • テラタームが起動してすぐ閉じる場合
    • バッチファイルの文字コードを確認する。
    • 日本語パスを使用している場合は、Shift_JIS(ANSI)で保存する。

私の場合は、この2つを修正することで、バッチファイルから正常にテラタームマクロを起動できるようになりました。

コメント

タイトルとURLをコピーしました