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

コマンドプロンプトで日付をyyyymmdd形式、時間をhhmmss形式で得るには、以下のように取得する。 
取得した文字列をファイル名や、ログ出力などに使える。  

PR

コマンドプロンプトで日付をyyyymmdd形式、時間をhmmss形式で取得するサンプル

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%
PR

サンプルの解説

上記を解説。

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をコピーしました