式と演算子

2021/05/18 05:52 Macro::macro 仕様

式と演算子

if 等で扱う条件式は、以下の仕様となっています。

式の表現

式は、定数・変数・演算子・カッコで表現します。

式で扱う定数と変数は、整数型のみです。
結果も整数型になります。

関係演算子を用いた式の結果の値は、以下の通りです。
式の結果値の意味
0
1

演算子の優先順位による分類

優先順位演算子バージョン種類
1
(最高)
notビット否定演算子*1"~" はバージョン 4.53 以降で利用可
~(4.53 以降)
!(4.53 以降)論理否定演算子バージョン 4.53 以降で利用可
+正の単項演算子
-負の単項演算子
2*乗算演算子
/除算演算子
%余剰演算子A % B の値は A / B の余り
3+加算演算子
-減算演算子
4>>(4.54 以降)算術ビットシフト演算子バージョン 4.54 以降で利用可
<<
>>>(4.54 以降)論理ビットシフト演算子バージョン 4.54 以降で利用可
5andビット毎論理積演算子*1"&" はバージョン 4.53 以降で利用可
&(4.53 以降)
6xorビット毎排他的論理和演算子*1"^" はバージョン 4.53 以降で利用可
^(4.53 以降)
7orビット毎論理和演算子*1"|" はバージョン 4.53 以降で利用可
|(4.53 以降)
8<関係演算子
>
<=
>=
9=関係演算子"==" と "!=" はバージョン 4.54 以降で利用可
==(4.54 以降)
<>
!=(4.54 以降)
10&&(4.53 以降)論理積演算子バージョン 4.53 以降で利用可
11
(最低)
||(4.53 以降)論理和演算子バージョン 4.53 以降で利用可

*1 and, or, xor, not はビット演算子です。(論理演算子ではありません)

例:
    1 + 1
    4 - 2 * 3      この式の値は-2
    15 % 10        この式の値は5
    3 * (A + 2)    A は整数型の変数
    A and not B
    A <= B         A, B は整数型の変数。
                   結果の値は真のとき1、偽のとき0

ファイル 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>]整数メッセージ中の特殊文字を変換するかを指定します。

続きを読む