TL;DR;
@ECHO OFF
SET NOW_DATE=%DATE%
SET NOW_TIME=%TIME%
SET YEAR=%NOW_DATE:~0,4%
SET MONTH=%NOW_DATE:~5,2%
SET DAY=%NOW_DATE:~8,2%
SET HOUR=%NOW_TIME:~0,2%
SET MINUTES=%NOW_TIME:~3,2%
SET SECOND=%NOW_TIME:~6,2%
SET TIMESTAMP=%YEAR%-%MONTH%-%DAY% %HOUR%:%MINUTES%:%SECOND%
ECHO YEAR : %YEAR%
ECHO MONTH : %MONTH%
ECHO DAY : %DAY%
ECHO HOUR : %HOUR%
ECHO MINUTES : %MINUTES%
ECHO SECOND : %SECOND%
ECHO TIMESTAMP : %TIMESTAMP%
PAUSE
実行結果:
YEAR : 2024
MONTH : 10
DAY : 05
HOUR : 12
MINUTES : 28
SECOND : 27
TIMESTAMP : 2024-10-05 12:28:27
解説
①
SET NOW_DATE=%DATE%
SET NOW_TIME=%TIME%
現在日時を取得します。このときDATE・TIMEの実行結果が以下のような書式で取得できることを前提とします。
- 2024/10/05
- 12:37:38.35
②
SET YEAR=%NOW_DATE:~0,4%
SET MINUTES=%NOW_TIME:~3,2%
DATE・TIMEの結果を加工します。このとき、以下の書式を利用します。
-
%AAA:~x,n
: AAAのx文字目からn文字を取得する (xは0-indexed)
NOW_DATE=2024/10/05
の0文字目からの4文字が年(yyyyy)にあたるので、これを切り出してYEAR変数に代入しています。同じように、NOW_TIME=12:37:38.35
の3文字目から2文字が分(MM)にあたるので、これを切り出してMINUTES変数に代入しています。
③
SET TIMESTAMP=%YEAR%-%MONTH%-%DAY% %HOUR%:%MINUTES%:%SECOND%
取得した年月日・時分秒の情報を文字列結合して、任意のフォーマットに編集しています。
環境情報
C:\>ver
Microsoft Windows [Version 10.0.22631.4169]