1. ホーム
  2. ウィンドウズ

[解決済み】Windowsバッチスクリプトで日付と時刻をフォーマットする

2022-04-23 04:06:51

質問

Windows (Windows XP) のバッチスクリプトで、ファイル名などに使用するために、現在の日付と時刻をフォーマットする必要があります。

Stack Overflowの質問と似ています。 バッチファイルでの日付の追加方法 が、時間も入っている。

今のところ、こんな感じです。

echo %DATE%
echo %TIME%
set datetimef=%date:~-4%_%date:~3,2%_%date:~0,2%__%time:~0,2%_%time:~3,2%_%time:~6,2%
echo %datetimef%

となります。

28/07/2009
 8:35:31.01
2009_07_28__ 8_36_01

TIME%で1桁の時間を許可する方法はありますか?

2009_07_28__08_36_01

解決方法は?

結局、このスクリプトにたどり着きました。

set hour=%time:~0,2%
if "%hour:~0,1%" == " " set hour=0%hour:~1,1%
echo hour=%hour%
set min=%time:~3,2%
if "%min:~0,1%" == " " set min=0%min:~1,1%
echo min=%min%
set secs=%time:~6,2%
if "%secs:~0,1%" == " " set secs=0%secs:~1,1%
echo secs=%secs%

set year=%date:~-4%
echo year=%year%

:: WIN2008R2の場合、例えば以下のように「set month=%date:~3,2%」を作成する必要がありました ::さもなければ、MONTHに00が表示されます。

set month=%date:~4,2%
if "%month:~0,1%" == " " set month=0%month:~1,1%
echo month=%month%
set day=%date:~0,2%
if "%day:~0,1%" == " " set day=0%day:~1,1%
echo day=%day%

set datetimef=%year%%month%%day%_%hour%%min%%secs%

echo datetimef=%datetimef%