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 "月の切り出し結果"