日付と時刻の取得

にメンテナンス済み

バッチファイルでログファイルを作成したり、バックアップフォルダに日付を付けたりする際、現在の日付や時刻を取得する方法を知っておくと非常に便利です。

この記事では、%DATE%%TIME% の使い方から、ファイル名への活用方法まで解説します。

日付を取得する(%DATE%)

%DATE% 環境変数を使用すると、現在の日付を取得できます。

echo %DATE%
×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>echo %DATE%
2026/03/11
C:\users\user>
%DATE% のフォーマットについて

%DATE% の出力形式は Windows の地域設定によって異なります。日本語環境では一般的に YYYY/MM/DD の形式ですが、環境によっては曜日が含まれる場合(例: 火 2026/03/11)もあります。

時刻を取得する(%TIME%)

%TIME% 環境変数を使用すると、現在の時刻を取得できます。

echo %TIME%
×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>echo %TIME%
14:30:45.23
C:\users\user>
%TIME% の形式

%TIME%HH:MM:SS.mm の形式で表示されます。午前の時間帯では先頭にスペースが入る場合があります(例: 9:05:30.12)。

日付からファイル名に使える文字列を作成する

ファイル名にはスラッシュ / やコロン : を使用できないため、日付・時刻からこれらの文字を取り除く必要があります。

日付を YYYYMMDD 形式にする

dateformat.cmd
@echo off
setlocal

rem %DATE% が YYYY/MM/DD 形式の場合
set YYYY=%DATE:~0,4%
set MM=%DATE:~5,2%
set DD=%DATE:~8,2%
set TODAY=%YYYY%%MM%%DD%

echo 今日の日付: %TODAY%

endlocal
×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>dateformat.cmd
今日の日付: 20260311
C:\users\user>

時刻を HHMMSS 形式にする

timeformat.cmd
@echo off
setlocal

rem 時刻の先頭スペースを0に置換
set HOUR=%TIME:~0,2%
set HOUR=%HOUR: =0%
set MIN=%TIME:~3,2%
set SEC=%TIME:~6,2%
set NOW=%HOUR%%MIN%%SEC%

echo 現在時刻: %NOW%

endlocal
×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>timeformat.cmd
現在時刻: 143045
C:\users\user>
チェック

%TIME% の時間部分が 1 桁の場合(午前 9 時台など)、先頭にスペースが含まれます。set HOUR=%HOUR: =0% でスペースを 0 に置換することで、常に 2 桁の表示になります。

日付・時刻をファイル名に使用する

タイムスタンプ付きバックアップ

backup_with_date.cmd
@echo off
setlocal

set YYYY=%DATE:~0,4%
set MM=%DATE:~5,2%
set DD=%DATE:~8,2%
set TIMESTAMP=%YYYY%%MM%%DD%

set BACKUP_DIR=D:\Backup\%TIMESTAMP%

mkdir "%BACKUP_DIR%" 2>nul
xcopy "C:\Users\user\Documents\*.*" "%BACKUP_DIR%\" /E /Y >nul

echo バックアップ先: %BACKUP_DIR%
echo バックアップが完了しました。

endlocal
×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>backup_with_date.cmd
バックアップ先: D:\Backup\20260311
バックアップが完了しました。
C:\users\user>

タイムスタンプ付きログファイル

log_with_timestamp.cmd
@echo off
setlocal

set YYYY=%DATE:~0,4%
set MM=%DATE:~5,2%
set DD=%DATE:~8,2%
set LOGFILE=C:\Logs\process_%YYYY%%MM%%DD%.log

echo %DATE% %TIME% - 処理を開始しました。 >> "%LOGFILE%"

rem 処理内容...
echo %DATE% %TIME% - ファイルをコピーしました。 >> "%LOGFILE%"

echo %DATE% %TIME% - 処理を完了しました。 >> "%LOGFILE%"

echo ログファイル: %LOGFILE%
endlocal

より確実な日付取得方法(wmic を使用)

%DATE% は地域設定に依存するため、環境によって異なるフォーマットになる場合があります。より確実に日付を取得するには、wmic コマンドを使用する方法があります。

wmic_date.cmd
@echo off
setlocal

for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /format:list') do set DATETIME=%%I

set YYYY=%DATETIME:~0,4%
set MM=%DATETIME:~4,2%
set DD=%DATETIME:~6,2%
set HH=%DATETIME:~8,2%
set MIN=%DATETIME:~10,2%
set SS=%DATETIME:~12,2%

echo 日付: %YYYY%/%MM%/%DD%
echo 時刻: %HH%:%MIN%:%SS%
echo ファイル名用: %YYYY%%MM%%DD%_%HH%%MIN%%SS%

endlocal
×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>wmic_date.cmd
日付: 2026/03/11
時刻: 14:30:45
ファイル名用: 20260311_143045
C:\users\user>
wmic が利用できない場合

Windows の新しいバージョンでは wmic が非推奨になっています。代替として PowerShell を利用する方法もあります:for /f %%I in ('powershell -command "Get-Date -Format yyyyMMdd"') do set TODAY=%%I

実践例:古いファイルの自動削除

30 日以上前のバックアップファイルを削除するバッチファイルの例です。

cleanup_old.cmd
@echo off
setlocal

set BACKUP_DIR=D:\Backup\Logs
set DAYS=30

echo %DAYS% 日以上前のファイルを削除します。

forfiles /P "%BACKUP_DIR%" /S /M *.log /D -%DAYS% /C "cmd /c echo 削除: @path && del @path" 2>nul

echo クリーンアップが完了しました。
endlocal
チェック

forfiles コマンドは、ファイルの更新日時に基づいてファイルを選択・処理するコマンドです。/D -30 で 30 日以上前のファイルを対象にできます。

まとめ

操作方法
日付を取得%DATE%
時刻を取得%TIME%
YYYYMMDD 形式%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%
環境非依存の日付取得wmic os get localdatetime

関連記事

練習問題

練習問題

%DATE% 環境変数について正しい説明はどれですか?

回答がサーバーに送信されることはありません
#コマンドプロンプト #バッチファイル #日付 #時刻 #ログ