豚吐露@wiki

batでの日時の使い方

最終更新:

ohden

- view
管理者のみ編集可

batでの日時の使い方

Windows7 Professional
Windows10 Pro(64bit) version 1909

yyyymmdd_HHMMss
下記を踏まえた、簡単なやり方。
set tm=%time: =0%
set tm=%tm::=%
set tm=%tm:~0,6%
set dt=%date:/=-%
set dt=%dt:~0,10%
echo %dt%_%tm%
空白を'0'に置換
':'を削除
変数へ先頭6文字(時分秒)を切り取り設定
'/'を'-'に置換
変数へ先頭10文字(年-月-日)を切り取り設定 ※OS設定変更で曜日などを付与できるため
表示してみる
2020-11-19_104947
こんな感じでも同じように求めることができる。

こっちの方がシンプルで良いかも♪

切り貼りの解説
日時は以下の環境変数で取得可能
echoの結果
echo %date% 2014/04/01
echo %time% 1:23:45.67

ただ、普通、このままで使いたいとは思わない。
よく使うのがyyyymmdd形式や、hhmmss形式ですね。

まずは、実現方法。
set dt=%time: =0%
set dt=%date:~0,4%%date:~5,2%%date:~8,2%%dt:~0,2%%dt:~3,2%%dt:~6,2%
echo %dt%
20140401012345
これで現在日時が環境変数dtにyyyymmddHHMMSS形式で設定されました。

以下、解説。

とりあえず、環境変数dateとtimeから文字を抜き出して環境変数に設定します。

set d=%date:~0,4%%date:~5,2%%date:~8,2%
ここでsetした環境変数dをechoすると...
20140401
のように表示される。よく使う『yyyymmdd』だけの文字列です。
ポイントは環境変数名の後ろの『:』以降。
%date:~0,4% dateの1文字目から4文字 → 年(2014)を表す
%date:~5,2% dateの6文字目から2文字 → 月(04)を表す
%date:~8,2% dateの9文字目から2文字 → 日(01)を表す
です。

じゃtimeも...って思うとtimeは時間が1桁の時、先頭にスペースが入っちゃって困る。(´・ω・`)
なので、以下のように一旦クッションが必要。
set t=%time: =0%
set t=%t:~0,2%%t:~3,2%%t:~6,2%
2行目はdateの時と変わらんので割愛。ここで『hhmmss』形式に抜き出してる。
1行目は、置換の書き方。『%環境変数名:S1=S2%』って書くと、S1をS2に置換した文字を出力する。
この例では、1行目で『 (半角スペース)』を『0』に置換して環境変数tへ出力し、2行目で環境変数tから必要な部分の切り出しを行っている。

この置換は複数文字でも可能。置換の例を以下に挙げとく。
echoした結果
echo %date:/=-% 2014-04-01
echo %date:2014/=% 04/01
echo %date:2014/=今日の日付は...% 今日の日付は...04/01
って感じ。日時をどうこうするってだけじゃなくて結構色々使えるので覚えておくに越したこたぁなぃ。


2020-11-19追記。
システムトレイの日時の表示を変更するの設定が%date%やdateコマンドの出力に影響するので注意。



更新日: 2024年09月24日 (火) 09時53分16秒

名前:
コメント:

すべてのコメントを見る
記事メニュー
ウィキ募集バナー