前回のエントリー↓を公開した後、細かい調整をしました。
元々、日中は少し明るい画面、夜は出来るだけ暗く、と考えていたので、明るさの設定を変えた二つのファイルを用意し、時間帯によってどちらを処理するか条件分岐させられるよう調べてみました。
最初はタスクスケジューラの方で時間帯による処理分けを考えたのですが...そもそも指定した時間にPCが起動していなければ処理が無視されるとか、私は自宅のPCは外出中は落とす派なんですよね。
タスクスケジューラで「無視された場合でも起動したら処理をする」などと設定したところで、もし朝も無視→夜も無視、と無視が溜まると次にログインした時はどうなるの? など、検証も面倒なので、バッチファイルの方で条件分岐させて頑張ってみることに。
必要だったのは...
・変数の書き方: SET 変数名=
イコールの前後にスペースを入ちゃいけないらしい、偏屈すぎる。
・時刻を取得: SET time=TIME
timeという変数を宣言し、そこに現在の時刻を代入しています、時、分、秒数が入ります。ちゃんと入っているかどうかは、ECHO %time% で確認できます。
・文字の切り取り: SET time=%TIME:~0,2%
今回必要なのは、時、分、秒のうち、「時」の部分だけですので、そこだけ切り取ります、20時とか07時とか。
:~切り取り開始位置,切り取る文字数 という書式です。
・IF構文: IF 条件(処理) else (その他の場合の処理)
・比較演算子:%time% geq 18
geqはgreater or equal で、「18か、それより大きければ」となります。一覧は以下。
[数値1] equ [数値2] | [数値1]と[数値2]が等しい |
[数値1] neq [数値2] | [数値1]と[数値2]が等しくない |
[数値1] lss [数値2] | [数値1]が[数値2]より小さい |
[数値1] leq [数値2] | [数値1]が[数値2]以下 |
[数値1] gtr [数値2] | [数値1]が[数値2]より大きい |
[数値1] geq [数値2] | [数値1]が[数値2]以上 |
ちなみにANDに相当するモノがないようで驚愕しました。
今回の処理で必要なのが、0時~7時→暗い、7時~18時→少し明るい、18時~0時→暗い だったので、
IF %time% geq 7 AND %time% leq 18 (少し明るい処理) else (暗い処理)
的に考えていました。
ともあれ、これで目的だった「時間によって画面の明るさを変える」が達成できました。
以上。