カレントの考え方

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 コマンドでカレントを変更することが可能です。

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

yesnobox

【Tera Term マクロ言語】コマンドリファレンス

yesnobox 機能

[その他のコマンド]

ダイアログボックスを開き、ユーザーに「はい」/「いいえ」を選択させます。

コマンドライン

yesnobox <message> <title> [<special>]

機能説明

ダイアログボックスを開き、ユーザーに「はい」/「いいえ」を選択させます。

また、バージョン 4.60 以降からは、キャンセル*1したときにマクロの実行を停止できるようになっています。
<message>
ダイアログボックスに表示されるメッセージを指定します。
<title>
ダイアログボックスのタイトルを指定します。
[<special>]
バージョン 4.54 以降で利用可能です。
(オプション デフォルト=0)
このオプションの使用は推奨されません。

0 でない場合は、<message> に含まれる以下の文字列が特殊文字として扱われます。
入力出力
\\"\"
\n改行
\tタブ
strspecial マクロコマンドを使用して文字列を変換することで同等の結果を得られます。

パラメータの説明

指定するパラメータは以下の通りです。
パラメータパラメータ説明
<message>文字列ダイアログボックスに表示するメッセージを指定します。
<title>文字列ダイアログボックスのタイトルを指定します。
[<special>]整数メッセージ中の特殊文字を変換するかを指定します。

続きを読む

var2clipb

【Tera Term マクロ言語】コマンドリファレンス

var2clipb 機能

[その他のコマンド]

テキストデータをクリップボードにコピーします。

コマンドライン

var2clipb <string>

機能説明

<string> をクリップボードにコピーします。
<string>
クリップボードにコピーする文字列を指定します。

パラメータの説明

指定するパラメータは以下の通りです。
パラメータパラメータ説明
<string>文字列クリップボードにコピーする文字列を指定します。

続きを読む

uptime

【Tera Term マクロ言語】コマンドリファレンス

uptime 機能

[その他のコマンド]

OSの稼働時間を取得します。

コマンドライン

uptime <intvar>

機能説明

Windows OS の稼働時間(ミリ秒)を <intvar> に格納します。

なお、稼働時間が 49 日を経過すると、0 に戻ります。
0 に戻る理由については、下記備考を参照してください。

パラメータの説明

指定するパラメータはありません。

指定するパラメータは以下の通りです。
パラメータパラメータ説明
<intvar>整数Windows OS の稼働時間(ミリ秒)を格納する変数を指定します。

続きを読む

strdim

【Tera Term マクロ言語】コマンドリファレンス

strdim 機能

[その他のコマンド]

文字列配列型の変数を宣言します。

コマンドライン

strdim <array> <size>

機能説明

<size> 個の要素を持つ整数配列型の変数 <array> を宣言します。

配列については マクロに利用できるデータ型 を参照してください。
<array>
文字列型配列の変数名を指定します。

配列内の各要素の初期値は空文字列です。
<size>
<size> は 1 ~ 65536 の範囲の値を持つことができます。

配列の添字は 0 オリジンです。
5 を指定した場合、0 ~ 4 の 5 つになります。

パラメータの説明

指定するパラメータは以下の通りです。
パラメータパラメータ説明
<array>文字列型配列配列名を指定します。
<size>整数配列の数を指定します。

続きを読む