2019/08/10(土)文字列型配列を別ファイルへ外出しする
2021/05/21 07:01
文字列型配列を別ファイルへ外出しする方法
このサンプルマクロは、以下の仕様を満たすものとします。マクロの目的
外部ファイルに定義した文字列型配列を読み込みます。文字列型配列は便利なのですが、マクロファイルに埋め込んでしまうとマクロが読みにくくなってしまいます。
そこで include を利用します。
なお、当該マクロは単体で便利なものではなく、組み込んで利用するサンプルになります。
利用可能環境
Teraterm
依存する Tera Term バージョン:Tera Term 4.67 以降*1利用する Tera Term コマンド:
種別:制御 | Ver | 機能の簡易説明 |
---|---|---|
for,next | 繰り返す。 | |
include | インクルードファイルに移る。 | |
種別:文字列操作 | Ver | 機能の簡易説明 |
str2int | 文字列を整数値に変換する。 | |
strsplit | 4.67以降 | 文字列を分割する。 |
種別:ファイル操作 | Ver | 機能の簡易説明 |
fileclose | ファイルハンドルを閉じる。 | |
fileopen | ファイルを開く。 | |
filereadln | ファイルから一行読む。 | |
種別:その他 | Ver | 機能の簡易説明 |
messagebox | ダイアログボックスを開き、ユーザーにメッセージを知らせる。 | |
4.54以降 | 特殊文字の解釈を制御するオプションの追加。 | |
4.60以降 | キャンセル時にマクロ停止を確認する機能の追加。 |
マクロの使い方
実行タイミング
任意のタイミングで実行可能です。マクロの指定方法
詳細は TeraTerm マクロの使い方 を参照してください。ttpmacro.exe を利用する場合
ファイルの拡張子 .ttl を ttpmacro.exe へ関連付けしておきます。.ttl ファイルをダブルクリック等で実行します。
ただし、当該マクロは、単体で便利なものではなく、組み込んで利用するサンプルになります。
ttermpro.exe を利用する場合
ttermpro.exe を利用する場合は、起動時にオプションへ /M=xxx.ttl のように指定します。ただし、当該マクロは、単体で便利なものではなく、組み込んで利用するサンプルになります。
メニューから実行する場合
Tera Term メニューから「コントロール(O)」→「マクロ(M)」を選択します。対象ファイルを選択して「開く」ボタンをクリックすると、実行されます。
ただし、当該マクロは、単体で便利なものではなく、組み込んで利用するサンプルになります。
コード
著作権情報
このサンプルマクロに関する著作権は、当サイト管理者が所有しています。著作権者
神場 和也ライセンス
3条項BSDライセンス関連情報
(なし)サンプルコード
ファイルダウンロード
readexampledata.zip※ 解凍してご利用ください。
項目 | 内容 |
---|---|
文字コード | Shift JIS |
実行確認バージョン | Tera Term Ver 4.103 |
備考 | 下記コピペ用ソースコードをファイルに保存したものです。 |
コピペ用
以下のソースコードをファイルに保存のうえご利用ください。※ UTF-8 で保存した場合は、Tera Term Ver 4.102 以降で実行する必要があります。詳細は マクロファイルの仕様 を参照してください。
・文字列型配列の定義ファイル example.dat
strdim example 5 example[0] = '192.168.0.1' example[1] = '192.168.0.2' example[2] = '192.168.0.3' example[3] = '192.168.0.4' example[4] = '192.168.0.5'
・example.dat を読み込むマクロ 理論実証版
想定ファイル名:readexampledata_a.ttl
; ssh2 login macro of Tera Term ; ; File: readexampledata_a.ttl ; Description: example.dat を読み込むマクロ 理論実証版 ; Environment: generic ; Update: 2019/8/10 ; Author: Kazuya Jimba ;;; 環境変数設定 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; メイン処理 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; include 'example.dat' for i 0 4 messagebox example[i] 'strdim' next ;;; 終了処理 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; end
上記の場合、最大値を手入力で管理する必要があります。
なので最大値だけは取得するようにしてみます。
これを行うメリットは、外だししたファイルの記述内容だけ気を付ければ、本体の修正を行う必要性を減らせる*2 ことです。
・example.dat を読み込むマクロ
想定ファイル名:readexampledata_b.ttl
; ssh2 login macro of Tera Term ; ; File: readexampledata_b.ttl ; Description: example.dat を読み込むマクロ ; Environment: generic ; Update: 2019/8/10 ; Author: Kazuya Jimba ;;; 環境変数設定 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DatFile = 'example.dat' ;;; メイン処理 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; strdim のデータサイズを取得する fileopen fhandle DatFile 0 filereadln fhandle fline ; コマンド "strdim <array> <size>" を分割する。 strsplit fline ' ' 3 ; 取得した <size> は文字なので、数値に置換する。 str2int _Max_Count groupmatchstr3 fileclose fhandle ;; ファイルを読み込む include DatFile for i 0 (_Max_Count - 1) messagebox example[i] 'strdim' next ;;; 終了処理 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; end
備考
include で読み込まれるファイルは 1 行ずつ解釈されるため実行速度が遅くなる可能性があります。詳細は include の備考を参照してください。