ファイル BOM 情報確認

2021/05/18 06:06 Macro::macro サンプル

ファイルの BOM 情報確認マクロ

このサンプルマクロは、以下の仕様を満たすものとします。

マクロの目的

対象ファイルの BOM (Byte Order mark) を確認します。

出力されるダイアログボックスの数値の意味は、以下の通りです。
<result>の値値の意味
-1対象 BOM は UTF-8 のはずだが情報が不正。
0対象に BOM はなかった。
1対象 BOM は UTF-8 を示している。
2対象 BOM は UTF-16 Big Endian を示している。
3対象 BOM は UTF-16 Little Endian を示している。

続きを読む

2019/07/11(木)パスワードファイル暗号化(7zip 利用版)

2021/05/21 06:34 Macro::macro サンプル

パスワードファイル暗号化(7zip 利用版)

このサンプルマクロは、以下の仕様を満たすものとします。

マクロの目的

Tera Term の getpasswd コマンドで作成したパスワードファイルを、暗号化または解凍します。
暗号化・解凍はそれぞれ別のマクロとし、個別に実行可能とします。
また、共通する情報は設定ファイルを include して読み込むものとします。

なお、アーカイブ作成・解凍のための前提アプリに、コマンドライン版 7zip を利用します。
7zip は、GNU LGPL ライセンスによって開発されているアーカイバです。
https://sevenzip.osdn.jp/

続きを読む

カレントの考え方

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>文字列クリップボードにコピーする文字列を指定します。

続きを読む