strftime フォーマット

strftime フォーマット

strftime は、%Y を西暦4桁として表すといった、指定の文字列で日付や時刻を表します。

ログ名に指定可能な時刻の書式 strftime フォーマットは、以下の通りです。

例えば、取得するログの名前を [アクセスしたホスト名]-[YYYY][MM][DD].log という形式にしたい場合は、&h-%Y%m%d.log と入力します。

strftime フォーマットの書式
書式意味
&hホスト名。未接続の場合は空。
&pTCP ポート番号。未接続の場合は空。TCP 接続でないときも空。
&uログオン中のユーザ名。
%a曜日の省略形。
%A曜日の正式名。
%b月の省略形。
%B月の正式名。
%cロケールに対応する日付と時刻の表現。
%d10 進数で表す月の日付 (01 ~ 31)。
%H24 時間表記の時間 (00 ~ 23)。
%I12 時間表記の時間 (01 ~ 12)。
%j10 進数で表す年初からの日数 (001 ~ 366)。
%m10 進数で表す月 (01 ~ 12)。
%M10 進数で表す分 (00 ~ 59)。
%p現在のロケールの午前/午後。
%S10 進数で表す秒 (00 ~ 59)。
%U10 進数で表す週の通し番号。日曜日を週の最初の日とする (00 ~ 53)。
%w10 進数で表す曜日 (0 ~ 6、日曜日が 0)。
%W10 進数で表す週の通し番号。月曜日を週の最初の日とする (00 ~ 53)。
%x現在のロケールの日付表現。
%X現在のロケールの時刻表現。
%y10 進数で表す西暦の下 2 桁 (00 ~ 99)。
%Y10 進数で表す 4 桁の西暦。
%z, %Zレジストリの設定に応じて、タイム ゾーンの名前または省略形を指定します。
タイム ゾーンが不明な場合は指定しません。
%%パーセント記号。

関連記事

strftime は、以下の記事でも扱っています。

設定記事

コマンド

備考

strftime (MSDNライブラリ)

エスケープ文字


エスケープ文字

Tera Term マクロに限らずプログラムではエスケープ文字を利用したくなる場面があります。

例えば、シェルで改行文字をエスケープすると、内容によっては長くなってしまう1行も、適切に改行することで見やすいスクリプトになります。
$ cat sample.sh
#!/bin/bash
the_first_value="5"
the_second_value="6"
printf "This sample calculation message %s + %s = %s\n" \
  ${the_first_value} \
  ${the_second_value} \
  $((the_first_value + the_second_value))
$ bash sample.sh
This sample calculation message 5 + 6 = 11
例えば、括り文字 (シングルクォーテーション ' や、ダブルクォーテーション " のこと)をエスケープすると、括り文字の中で括り文字を扱うことができます。
$ echo "This is \"double Quotation\" sample"
This is "double Quotation" sample

結論

結論を言うと、現時点*1において Tera Term にエスケープ文字はありません。

*1 : Tera Term バージョン 4.103

代替方法

エスケープする方法がないため、上記の使用例に対する代替案を記します。

ASCII コードを直指定

括り文字の中に括り文字を利用する場合は、ASCII コードを直に指定する方法があります。
指定方法
ASCII コードを利用
Tera Term で ASCII コードを指定するには、文字に割り振られた番号に # を付与します。

'#' で数値が記述場合、10進数 (0~9) での指定です。
'#$' で数値が記述されている場合、16進数 (0~F) での指定です。

たとえば Tera Term で文字 A を指定する場合、10進数では #65 を、16進数では #$41 を記述します。
ASCII コードで指定可能な文字については ASCII コード を参照してください。
制御文字/印字可能文字に関わらず指定可能です。

・ASCII コードでの代替指定
sprintf "This is "#34"double quotation"#$22
messagebox inputstr 'message test'
ASCII コードでの指定

クォーテーションの種類を変える
厳密にいうと代替方法ではありませんが、シングルクォーテーションの中でダブルクォーテーションを利用することは可能です。
sprintf 'This is "double quotation"'
messagebox inputstr 'message test'
制限事項
上述のような ASCII コード指定する場合は、クォーテーションの中に入れることができません。

・ASCII コードの指定をミスしている例
sprintf "This is #34double quotation"#$22
messagebox inputstr 'message test'
クォートを指定ミスしている例


また、一連の文字列にはスペースを入れることができません。

・ASCII コードが反映されない例
sprintf "This is " #34 "double quotation"#$22
messagebox inputstr 'message test'
反映されない例


スペースも ASCII コードで指定可能なので、以下のように記述します。

・スペース文字を指定した例
sprintf "This is"#32#34"double quotation"#34
messagebox inputstr 'message test'

strconcat

文字列を、何列かに分けて組み立てたい場合は strconcat を利用することで代替できるかもしれません。

もともと strconcat を使っているものを sprintf2 に代替したものが Linux SSH ですが、逆に sprintf2 を strconcat で分解する方法としても参考になると思います。