ネットワーク

Teratermマクロ strconcatで文字列を結合する

strconcat は2つの文字列をつなげるコマンドです。Teratermマクロでは、接続先の文字列を組み立てたり、プロンプトを作ったり、ログファイル名を生成したりと、あらゆる場面で使います。

構文

strconcat <文字列変数> <追加する文字列>

第1引数の変数の後ろに第2引数がつながり、結果は第1引数の変数に上書きされます。戻り値ではなく変数が書き換わる点に注意してください。

使用例:プロンプト文字列を作る

HostName = 'test-L3'
EnPrompt = HostName

strconcat EnPrompt '#'

EnPrompt の中身は test-L3# になります。

ユーザモードと特権モードのプロンプトを両方作る場合はこうなります。

HostName = 'test-L3'

prompt_user = HostName
strconcat prompt_user '>'

prompt_enable = HostName
strconcat prompt_enable '#'

prompt_usertest-L3>prompt_enabletest-L3# になります。wait コマンドで待ち受ける文字列として使います。

使用例:ログファイル名を組み立てる

HostName = 'test-FW'
getdate TestDate
strcopy TestDate 1 4 year
strcopy TestDate 6 2 month
strcopy TestDate 9 2 day

LogName = ''
strconcat LogName HostName
strconcat LogName '_'
strconcat LogName year
strconcat LogName month
strconcat LogName day
strconcat LogName '.txt'

LogName の中身は test-FW_20210603.txt になります。

つまずきポイント

初期化を忘れると前の値が残ります。
LogName = '' のように空文字で初期化してから結合してください。ループの中で使う場合、初期化を忘れると1周目の値に2周目が連結され、ファイル名がどんどん伸びていきます。

結合を繰り返すより sprintf2 が読みやすい場合があります。
結合が5回、6回と続くときは sprintf2 を検討してください。

sprintf2 conbuf '%s:22 /ssh /auth=password /user=%s /passwd=%s' IP USER PASSWD

1行で同じことができ、あとから読み返したときに何を作っているかが分かりやすくなります。

関連記事

-ネットワーク