ネットワーク

Teratermマクロ strcopyで文字列を切り出す|日付から年月日を分解する

strcopy は文字列の一部を抜き出して別の変数に入れるコマンドです。Teratermマクロでは、getdate で取得した日付から「年」「月」「日」を分解するときによく使います。

構文

strcopy <元の文字列> <開始位置> <文字数> <格納先の変数>

開始位置は1から数えます。0からではありません。

使用例:日付を年月日に分解する

getdate TestDate
; TestDate の中身は 2021-06-03

strcopy TestDate 1 4 year
strcopy TestDate 6 2 month
strcopy TestDate 9 2 day

各変数の中身は次のようになります。

変数 中身 切り出し位置
year 2021 1文字目から4文字
month 06 6文字目から2文字
day 03 9文字目から2文字

2021-06-03 を1文字ずつ数えると、5文字目と8文字目が - です。そのため月は6文字目から、日は9文字目からになります。

よくある間違い

開始位置を0から数えてしまう。
多くのプログラミング言語と違い、Teratermマクロの strcopy は1始まりです。strcopy TestDate 0 4 year は意図した結果になりません。

日の切り出し位置を間違える。
strcopy TestDate 2 2 day と書くと 02 ではなく 02(2文字目から2文字=02)が入り、日付ではなく年の一部を取ってしまいます。正しくは9文字目からです。

切り出した文字列を確認する

期待どおりに切り出せているか、messagebox で確認するのが確実です。

getdate TestDate
strcopy TestDate 6 2 month
messagebox month "月の切り出し結果"

関連記事

-ネットワーク