コマンドプロンプトで日付をyyyymmdd形式、時間をhhmmss形式で取得

コマンドプロンプトで日付をyyyymmdd形式、時間をhhmmss形式で得るには、以下のように取得します。 

取得した文字列をファイル名や、ログ出力などに使えますね。  

REM 日時をyyyymmdd形式で取得する
SET YYYYMMDD=%DATE:/=%
ECHO %YYYYMMDD%

REM 時間をhhnnss形式で取得する
SET TIME_TEMP=%TIME: =0%
SET HHNNSS=%TIME_TEMP:~0,2%%TIME_TEMP:~3,2%%TIME_TEMP:~6,2%
ECHO %HHNNSS%

上記を解説します。

REM 日時をyyyymmdd形式で取得する

コメント文です。このバッチファイルを他の人が見たときに何をしているものなのかが分かるようにコメントを残しておきましょう。

SET YYYYMMDD=%DATE:/=% 

YYYYMMDDという変数に、日付の年4桁、月2桁、日2桁の値を代入しています。DATEがシステム日付を取得し、「:/=」の部分で日付の書式を整えています。DATE で、2020/08/15 という日付が取得され、「:/=」で「/」を空文字に置換します。結果、20200815が取得されます。

ECHO %YYYYMMDD%

前の処理で取得した日付を代入した変数の中身を出力(コマンドプロンプトの画面に表示)します。

REM 時間をhhnnss形式で取得する 

1行目と一緒で、コメントですね。プログラムにはコメントが大事です。書き過ぎくらいがちょうどよいです。

SET TIME_TEMP=%TIME: =0% 

TIME_TEMPという変数に、時間の値を代入しています。時間はTIMEで取得します。時間は少し厄介なので2段階で書式の変更をしています。TIMEは、13:17:31.45 といった時分秒と秒の100分の1の値が取得できます。ただし、時の部分は、1~23となるため、早朝7時だと、「 7」([スペース]7)となってしまいます。そのため、「: =0」の書式でスペースを0に変換しています。これにより「00:00:00.00」の書式の値が作られます。(0は任意の数字1文字)

SET HHNNSS=%TIME_TEMP:~0,2%%TIME_TEMP:~3,2%%TIME_TEMP:~6,2% 

次に上の行で整形された文字列のうち、100分の1秒の部分を除いた時分秒のみを取得します。「00:00:00.00」の書式になっているため、1~2文字目と4~5文字目、7~8文字目を取得します。
「TIME_TEMP:~0,2%」で1~2文字目を抽出します。「~0,2」は「0」の位置から「2」文字分という意味になります。システムの世界では1番目が0から始まることがよくあります。
続けて「%TIME_TEMP:~3,2%」で4~5文字目を抽出します。例によって4文字目は、3になります。
同様に「%TIME_TEMP:~6,2%」で7~8文字目を抽出します。
上記で取得した「000000」(0は任意の数字1文字)を「HHNNSS」変数に代入しています。

ECHO %HHNNSS%

最後に、前の処理で取得した時間を代入した変数の中身を出力(コマンドプロンプトの画面に表示)しています。

タイトルとURLをコピーしました