カレントの考え方

2021/05/18 06:01 Macro::macro 仕様

カレントディレクトリの考え方

Tera Term では、扱うカレントディレクトリ に少し注意が必要になることがあります。
ここでいうカレントディレクトリとは、実行ファイルが作業を行うためのディレクトリを指します。

詳細は、WikiPedia の カレントディレクトリ を参照してみてください。

推測ですが、Tera Term 本体 (ttermpro.exe) と、Tera Term Macro (ttpmacro.exe) が異なる実行ファイルであることが原因で、扱うカレントディレクトリが 2 つある状態になっているのかなと思っています。

Tera Term のヘルプから画像を引用します。

Tera Term モジュール構成
Tera Term モジュール構成

Tera Term カレントディレクトリ

デフォルトでは、Tera Term インストールディレクトリになります。
Tera Term 本体(の VT ウィンドウや TEK ウィンドウ)でファイルを読み書きする場合にデフォルトで表示されるディレクトリです。

Windows Vista 以降で、Tera Term を管理者として実行していない場合、ユーザアカウント制御 (UAC) が有効なため ttermpro.exe のあるディレクトリでファイルを書き込む場合、以下のディレクトリにリダイレクトされます。

32bit 版 Windows
%LOCALAPPDATA%\VirtualStore\Program Files\teraterm
64bit 版 Windows
%LOCALAPPDATA%\VirtualStore\Program Files (x86)\teraterm

「TERATERM.ini ファイルを上書き保存して、有効にもなっているのにカレントに存在しない!」という場合は、上記のディレクトリを確認してみてください。

マクロでは changedir コマンドで Tera Term 本体のカレントを変更することが可能です。

なお、getttdir コマンドは本来 ttpmacro.exe のカレントディレクトリを取得しますが、以下の制限があるため ttermpro.exe があるディレクトリとして扱っても問題が出ることは少ないでしょう。

「Tera Term ヘルプ」→「MACRO ヘルプ」→「使い方」の「マクロ実行法」より抜粋
TTPMACRO.EXE は TTERMPRO.EXE があるディレクトリに置かれていなければなりません。

Tera Term マクロカレントディレクトリ

デフォルトでは Tera Term マクロが存在するディレクトリが、カレントになります。

以下のマクロサンプルを任意のフォルダに置き、Tera Term のメニューからマクロを呼び出したり、マクロをダブルクリックで ttpmacro.exe を呼び出したりしても、同じフォルダならば変わりないことが確認できます。

getdir dir
messagebox dir 'Current directory'

getttdir コマンドで ttpmacro.exe があるディレクトリを知ることができます。
マクロでは getdir コマンドでカレント情報を取得し、setdir コマンドでカレントを変更することが可能です。

相対パスでコマンドを実行する場合に注意が必要になります。